Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> Вырезать все комментарии, preg_replace
eurobax  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 45
Пользователь №: 23837
На форуме: 6 лет, 6 месяцев, 17 дней
Карма:




Подскажите, как вырезать все комментарии в PHP коде, т.е. удалить все конструкции типа:
//коммент

/*
еще коммент
*/

/**************************
третий коммент
**************************/



Спустя 38 минут, 33 секунды (31.01.2012 - 22:00) Winston написал(а):
echo preg_replace('#/\**.*\*/#sU', '', $code);

Спустя 20 минут, 27 секунд (31.01.2012 - 22:21) eurobax написал(а):
Что-то съедает последнюю переменную
$code = '
global
$gl_error_desc, //коды ошибок системы
$gl_subsystems //подсистемы
/*
прочее
*/
'
;


Результат:
global
$gl_error_desc,

Спустя 3 минуты, 6 секунд (31.01.2012 - 22:24) Winston написал(а):
echo preg_replace('#/\*.*\*/#sU', '', $code);

Спустя 12 минут, 4 секунды (31.01.2012 - 22:36) asokol написал(а):
Может быть так?
echo preg_replace('%/\*.*?\*/|//.*?$|#.*?$%msu', '', $code);

Спустя 4 минуты, 1 секунда (31.01.2012 - 22:40) Winston написал(а):
Упс... я затупил, показалось, что только многострочные комменты нужно вырезать blink.gif

Спустя 6 минут, 26 секунд (31.01.2012 - 22:46) eurobax написал(а):
Отлично, но такое все равно не переваривает
//*******************************
$level = 0;
/*******************************/

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

Спустя 1 минута, 21 секунда (31.01.2012 - 22:48) eurobax написал(а):
Цитата (asokol @ 31.01.2012 - 19:36)
Может быть так?
echo preg_replace('%/\*.*?\*/|//.*?$|#.*?$%msu', '', $code);

Во, сейчас получилось!

Спустя 42 секунды (31.01.2012 - 22:49) inpost написал(а):
Не вижу смысла убирать лишнее.
Типо, чтобы у клиента не было подсказок... странно всё это smile.gif

Спустя 53 секунды (31.01.2012 - 22:49) Winston написал(а):
Ну вариант asokol'a должен переварить

Спустя 40 минут, 21 секунда (31.01.2012 - 23:30) eurobax написал(а):
Цитата (eurobax @ 31.01.2012 - 19:48)
Цитата (asokol @ 31.01.2012 - 19:36)
Может быть так?
<pre class="sh_sourceCode" rel="php"><span class="sh_function">echo preg_replace</span><span class="sh_symbol">(</span><span class="sh_string">'%/\*.*?\*/|//.*?$|#.*?$%msu'</span><span class="sh_symbol">,</span> <span class="sh_string">''</span><span class="sh_symbol">,</span> <span class="sh_variable">$code</span><span class="sh_symbol">);</span></pre>

Во, сейчас получилось!

Обнаружил нестыковку. В некоторых местах однострочные комменты вырезаются и "прихватывают" с собой следующую строку. Оказалось, в текстах конец строки где-то \n, а где \r\n.

Насколько я понял, $ отвечает за конец строки \r\n, но похоже игнорирует \n
Как это можно переделать?

Спустя 4 минуты, 19 секунд (31.01.2012 - 23:34) Winston написал(а):
Убери модификатор s

Спустя 47 секунд (31.01.2012 - 23:35) asokol написал(а):

Спустя 39 минут, 15 секунд (1.02.2012 - 00:14) eurobax написал(а):
Цитата (asokol @ 31.01.2012 - 20:35)
Поменять $ на \n.

Или: http://stackoverflow.com/questions/503871/...s-from-php-code

Мда.. менял-менял, ронял несколько раз апач. Так и не получилось, там черт ногу сломит, то \r, то \n, то \r\n. Ну и ладно.
А вот за ссылку спасибо, оказывается есть у PHP этот "велосипед": http://docs.php.net/manual/en/function.php...-whitespace.php

Спустя 3 минуты, 4 секунды (1.02.2012 - 00:17) eurobax написал(а):
Цитата (inpost @ 31.01.2012 - 19:49)
Не вижу смысла убирать лишнее.
Типо, чтобы у клиента не было подсказок... странно всё это smile.gif

Вместо 2Мб кода с комментами, до которых клиенту нет дела, получилось 300Кб. Разве это не классно?

Спустя 3 минуты, 24 секунды (1.02.2012 - 00:21) inpost написал(а):
eurobax
2 мб комментов? Ну не знаю, что там можно столько настрочить smile.gif В, батенька, поэт!
А если серьёзно, то интерпретатор игнорирует комменты, на производительность влиять, соответственно, не будет. Разве что если сервер очень маленький, что 1 лишний мб. не поддерживает... Хотя где ещё такие сервера остались по 5мб smile.gif
А конец строки:
//.*(\n|\r|\n\r) с модификатором U.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Закрытая темаСоздание новой темыСоздание опроса