Как определить ширину текста javascript / jquery

Самое обычное решение — создать инлайновый элемент (у блочных ширина обычно или 100%, или заданная), например, span, задать его текст, шрифт и измерить его ширину функцией width().

Например, это можно сделать так:

[code lang=»javascript»]
function textWidth(text,fsize){
var newelem = $(‘<span>’);
newelem.text(text);
newelem.css(‘font-size’, fsize);
newelem.hide();
$(‘body’).append(newelem);
var w = newelem.width();
newelem.remove();
return w;
};
[/code]

Использовать следующим образом:

[code lang=»javascript»]
var mytextwidth = textWidth(‘lalala’,’16px’);
[/code]

В прошлом примере мы не определяем шрифт, а следовало бы. Конечно, передачу шрифта через параметр сделать проще простого, но раз уж мы используем jquery, сделаем так:

[code lang=»javascript»]
$.fn.textWidth = function(){
var newelem = $(‘<span>’);
newelem.text($(this).text());
newelem.css({‘font-size’: $(this).css(‘font-size’),
‘font-weight’:$(this).css(‘font-weight’),
‘font-family’:$(this).css(‘font-family’),
‘font-style’:$(this).css(‘font-style’)});
newelem.hide();
$(‘body’).append(newelem);
var w = newelem.width();
newelem.remove();
return w;
};
[/code]

И мы можем использовать эту функцию для любого jquery-объекта:

[code lang=»javascript»]
var mytextwidth = $(‘#myelement’).textWidth();
[/code]

Спецификация xlsx, docx, pptx (ISO/IEC 29500)

Если вам потребовалось досконально разобраться в современных форматах Excel, Word, Powerpoint и т.д., то, думаю, вы попробовали бы поискать их внутреннее устройство (спецификацию).
Название спецификации для открытых форматов Office Open XML File Formats: ISO/IEC 29500.
Скачать можно у меня, либо здесь (все стандарты ISO).

Origin null is not allowed by Access-Control-Allow-Origin

Эта ошибка возникает, когда вы пытаетесь сделать ajax-запрос к какому-либо сервису с локалхоста. Исправляется очень просто — припишите в конце адреса, на который делаете запрос, &callback=?.

Пример:

[code lang=»javascript»]
$.ajax({
type : "GET",
url : "http://api.twitter.com/1/users/show.json?screen_name="+groupname+’&callback=?’,
dataType: "json",
success : function(data) { … }
});
[/code]

Подробнее читайте тут.

Создание zip архива папки с вложенными папками в PHP

Для такой задачи потребуется рекурсивный обход вложенных папок, и добавление их в архив. Эту задачу (в данном случае) выполняет функция ZipDirectory, которая вызывается рекурсивно. Функция ZipFull же проверяет, возможно ли создать zip-архив, запускает ZipDirectory и закрывает файл при завершении обхода папок.

[code lang=»php»]
function ZipDirectory($src_dir, $zip, $dir_in_archive=») {
$dirHandle = opendir($src_dir);
while (false !== ($file = readdir($dirHandle))) {
if (($file != ‘.’)&&($file != ‘..’)) {
if (!is_dir($src_dir.$file)) {
$zip->addFile($src_dir.$file, $dir_in_archive.$file);
} else {
$zip->addEmptyDir($dir_in_archive.$file);
$zip = ZipDirectory($src_dir.$file.DIRECTORY_SEPARATOR,$zip,$dir_in_archive.$file.DIRECTORY_SEPARATOR);
}
}
}
return $zip;
}

function ZipFull($src_dir, $archive_path) {
$zip = new ZipArchive();
if ($zip->open($archive_path, ZIPARCHIVE::CREATE) !== true) {
return false;
}
$zip = ZipDirectory($src_dir,$zip);
$zip->close();
return true;
}
[/code]

Использование, например, следующее:

[code lang=»php»]
if (ZipFull(‘D:/test/’,’D:/result.zip’)) {
echo ‘Архив успешно создан!’;
} else {
echo ‘Ошибка при создании архива!’;
}
[/code]

Более подробно про ZipArchive вы можете почитать здесь — http://php.net/manual/en/ziparchive.open.php.