Как сделать код в одну строку?

12
Qest
На сайте с 21.10.2010
Offline
40
#11

Не нашел подходящего варианта, сделал сам. Кому-то возможно пригодится

<?
function listdir($start_dir='.') {

$files = array();
if (is_dir($start_dir)) {
$fh = opendir($start_dir);
while (($file = readdir($fh)) !== false) {
if (strcmp($file, '.')==0 || strcmp($file, '..')==0) continue;
$filepath = $start_dir . '/' . $file;
if ( is_dir($filepath) )
$files = array_merge($files, listdir($filepath));
else
array_push($files, $filepath);
}
closedir($fh);
} else {
$files = false;
}

return $files;

}

$files = listdir('.');

for($i=0;$i<count($files);$i++) {
$file=$files[$i];
if(substr($file, -3) == "php" && $file != "./compressor.php") {
$file_cleared = php_strip_whitespace($file);

$file_cleared = preg_replace('#\s*/\*.*?\*/\s*#i', "", $file_cleared);

$patterns[] = '/: /';
$patterns[] = '/\n/';
$patterns[] = '/ == /';
$patterns[] = '/ = /';
$patterns[] = "/\+ /";
$patterns[] = "/ \+/";
$patterns[] = '/ === /';
$patterns[] = '/ /';
$patterns[] = '/ /';
$patterns[] = '/ /';
$patterns[] = '/ /';
$patterns[] = '/ /';
$patterns[] = "/\t/";
$patterns[] = "/\<\?php/";
$patterns[] = "/\} /";
$patterns[] = "/ \}/";
$patterns[] = "/ \{/";
$patterns[] = "/\{ /";
$patterns[] = "/\) /";
$patterns[] = "/ \)/";
$patterns[] = "/ \(/";
$patterns[] = "/\( /";
$patterns[] = "/\> /";
$patterns[] = "/\; /";
$patterns[] = "/\, /";

$replacements[] = ':';
$replacements[] = '';
$replacements[] = '==';
$replacements[] = '=';
$replacements[] = '+';
$replacements[] = '+';
$replacements[] = '===';
$replacements[] = ' ';
$replacements[] = ' ';
$replacements[] = ' ';
$replacements[] = ' ';
$replacements[] = ' ';
$replacements[] = '';
$replacements[] = '<?';
$replacements[] = '}';
$replacements[] = '}';
$replacements[] = '{';
$replacements[] = '{';
$replacements[] = ')';
$replacements[] = ')';
$replacements[] = '(';
$replacements[] = '(';
$replacements[] = '>';
$replacements[] = ';';
$replacements[] = ',';
$finish = preg_replace($patterns, $replacements, $file_cleared);
file_put_contents($file,$finish);
echo $file,"<br>";
}
}
?>

Файл сканирует все файлы в том числе подпапки начиная с той где он находиться, изменяет их и перезаписывает(в данном примере только файлы с расширением php).

Удаляет комментарии в php,js. В JS комментарии должны быть так /* ... */, а не так //

Удалает пробелы и табуляцию и делать все в одну строку.

Так же изменяет(удаляет пробелы) код по заданным условиям.

Код может быть смешанным (php,js,html,css) все работает ок.

---

Условия писал какие в голову только пришли, поэтому список требует корректировки и добавления.

Так же не решена проблема c удалением комментариев в html, и комментариев вида // (мне этого было достаточно)

---

Буду признателен за корректировку кода, для достижения лучшего результата.

V
На сайте с 05.01.2011
Offline
23
#12

очень конечно логично удалять коменты с php .

по пшп не понятен ход вашей мысли )))

Joker-jar
На сайте с 26.08.2010
Offline
154
#13

Вообще мешать PHP с разметкой неблагодарное дело. Выполняемый на сервере код нет смысла "сжимать". Что же касается HTML, то, как ТС уже успел подметить, есть вероятность наличия в нем непосредственных вставок JS/CSS, поэтому регулярками тут не отделаешься, нужен алгоритм на базе конечных автоматов. Опять же, не стоит забывать о <pre>, <code>, ... для которых отступы и лайнбрейки значимы. И уйма других нюансов. Удачи

Qest
На сайте с 21.10.2010
Offline
40
#14

Сжимать php и удалять комменты не обязательно, но в связи с тем что у меня все файлы смешанные, тоесть идут частями и php и html и js, я не хочу разбираься и разделять код. Поэтому нужен был скрипт который удалит и сожмет вообще все что написано в файле, независимо от языка.

V
На сайте с 05.01.2011
Offline
23
#15
Qest:
Сжимать php и удалять комменты не обязательно, но в связи с тем что у меня все файлы смешанные, тоесть идут частями и php и html и js, я не хочу разбираься и разделять код. Поэтому нужен был скрипт который удалит и сожмет вообще все что написано в файле, независимо от языка.

ну и сделает код вдобавок не читабельным , как интересно потом его править

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий