Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Убрать пробелы, перенос строк (нужно минифицировать файл)
Форумы портала PHP.SU » » Вопросы новичков » Убрать пробелы, перенос строк (нужно минифицировать файл)

Страниц (2): [1] 2 »
 

1. nikoshot - 16 Июня, 2020 - 15:09:17 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $ocfilter = file_get_contents('css/style.css');
  4. echo $ocfilter;
  5. ?>
  6.  

На входе я принимаю файл.. и через этк конструкцию я его вставляю в шаблон...
Как можно что сделать что бы файл все данные были в одну строку..
Как я понимаю нужно удалить пробелы и переносы и табы..
Может есть какая то функция
Подскажите кто знает...
2. DlTA - 16 Июня, 2020 - 15:18:13 - перейти к сообщению
preg_replace(...)
3. Строитель - 16 Июня, 2020 - 15:37:04 - перейти к сообщению
nikoshot,
PHP:
скопировать код в буфер обмена
  1. $ocfilter = file_get_contents('css/style.css');
  2.  
  3. echo preg_replace(['~\s+~u', '~/\*.*?\*/~'], '', $ocfilter);
Второй шаблон '~/\*.*?\*/~' удалит ещё и комментарии. Если их нужно оставить - удалите второй шаблон.
4. nikoshot - 16 Июня, 2020 - 17:55:03 - перейти к сообщению
Строитель пишет:
nikoshot,
PHP:
скопировать код в буфер обмена
  1. $ocfilter = file_get_contents('css/style.css');
  2.  
  3. echo preg_replace(['~\s+~u', '~/\*.*?\*/~'], '', $ocfilter);
Второй шаблон '~/\*.*?\*/~' удалит ещё и комментарии. Если их нужно оставить - удалите второй шаблон.


Спасибо то что нужно, но я не учел момент.. нужно пробелы оставить...
Можете написать как оставить пробел?
(Добавление)
nikoshot пишет:
Строитель пишет:
nikoshot,
PHP:
скопировать код в буфер обмена
  1. $ocfilter = file_get_contents('css/style.css');
  2.  
  3. echo preg_replace(['~\s+~u', '~/\*.*?\*/~'], '', $ocfilter);
Второй шаблон '~/\*.*?\*/~' удалит ещё и комментарии. Если их нужно оставить - удалите второй шаблон.


Спасибо то что нужно, но я не учел момент.. нужно пробелы оставить...
Можете написать как оставить пробел?

Сам разобрался.. вместо '' поставил ' '
Спасибо! За помщь)
5. Vladimir Kheifets - 18 Июня, 2020 - 09:29:23 - перейти к сообщению
Строитель пишет:
nikoshot,
PHP:
скопировать код в буфер обмена
  1. $ocfilter = file_get_contents('css/style.css');
  2.  
  3. echo preg_replace(['~\s+~u', '~/\*.*?\*/~'], '', $ocfilter);
Второй шаблон '~/\*.*?\*/~' удалит ещё и комментарии. Если их нужно оставить - удалите второй шаблон.

Добрый день!
Речь идет о конкретной задаче: сжатие css-файла.
Предложенный Вами код убирает не только комментарии и переносы строк,
но и пробелы там, где они синтаксически обязательны.
например:
Цитата:
исходный текст:
padding: 5% 0 3% 0;
border: 1.5pt solid #aaa;

результат:
padding:5%03%0;border:1.5ptsolid#aaa;

может быть, сделать так:

PHP:
скопировать код в буфер обмена
  1. echo preg_replace(['~[\r\n\t]+~u', '~/\*.*?\*/~', '~\ {2,}~u'], ['','',' '], $ocfilter);

Удачи!
6. LIME - 19 Июня, 2020 - 16:55:10 - перейти к сообщению
Vladimir Kheifets чтож так сложно
вопрос решен уже попроще
nikoshot пишет:
Сам разобрался.. вместо '' поставил ' '
Спасибо! За помщь)

'~[\r\n\t]+~u' => ''
это так же может привести к невалидному синтаксису теоретически, а потому и усложнять третьим шаблон нет нужды
Удачи!
7. Строитель - 19 Июня, 2020 - 18:28:40 - перейти к сообщению
LIME
Удачи!
Радость
8. LIME - 19 Июня, 2020 - 18:34:10 - перейти к сообщению
Строитель '~/\*.*?\*/~'
а если просто жадность убрать? можно? ато глазам больно чутьчуть от закорючег)
(Добавление)
и * на+
опять же чтоб не сливалось в глазах))
9. Строитель - 19 Июня, 2020 - 19:07:56 - перейти к сообщению
LIME пишет:
а если просто жадность убрать?
Не, иначе будет захват от первого /* до последнего */, т.е. захватит и промежуточные комментарии, и css-селекторы.
LIME пишет:
и * на+
Теоретически можно, но если попадётся вариант /**/, то он не будет вырезан. Именно поэтому *.
10. LIME - 19 Июня, 2020 - 19:30:19 - перейти к сообщению
Строитель пишет:
Не, иначе будет захват от первого /* до последнего */,
а что тогда делает отмена жадности? ээ))
что такое жадность?
Строитель пишет:
но если попадётся вариант /**/, то он не будет вырезан
и пусть
наша цель сжать? пофиг на 4 байта в аномально редком кэйсе
(Добавление)
хотя есть другой вариант
положить шаблон в переменную и говорящим именем и тогда надо будет только один раз его прочитать и не ломать глаза каждый раз глядя на парад закорючег пли любой доработке
что дорабатываешь только то и читаешь
11. Строитель - 19 Июня, 2020 - 19:36:13 - перейти к сообщению
LIME пишет:
а что тогда делает отмена жадности? ээ))
Ищет до первого соответствия */ и прерывает цикл.
LIME пишет:
что такое жадность?
Ну ты ведь уже знаешь, что это такое? Закатив глазки
LIME пишет:
и пусть
наша цель сжать? пофиг на 4 байта в аномально редком кэйсе
Если ТС это устраивает, то да )
12. LIME - 19 Июня, 2020 - 19:38:23 - перейти к сообщению
Строитель пишет:
Ищет до первого соответствия */ и прерывает цикл.
азначит что? правильно
Строитель пишет:
будет захват от первого /* до последнего */,
не случится
очнись эй)) отмена жадности какраз уберет ? из шаблона
13. Строитель - 19 Июня, 2020 - 19:39:36 - перейти к сообщению
LIME пишет:
хотя есть другой вариант
положить шаблон в переменную и говорящим именем и тогда надо будет только один раз его прочитать и не ломать глаза каждый раз глядя на парад закорючег пли любой доработке
что дорабатываешь только то и читаешь
А как назвать переменную в этом случае, DeleteCommentsAndSpaces? Может ты и прав, так понятнее для программиста.
(Добавление)
LIME пишет:
отмена жадности как раз уберет ? из шаблона
Ты про модификатор U?
14. LIME - 19 Июня, 2020 - 19:50:55 - перейти к сообщению
Строитель пишет:
Ты про модификатор U?
а ты другой знаешь? агась
DeleteCommentsAndSpaces - пример названия для метода, только с маленькой буквы принято в начале
а для паттерна например
PHP:
скопировать код в буфер обмена
  1. $commentsPattern = '~/\*.*?\*/~';
  2.  
кстати я бы и utf обозначил, иначе могут быть закономерные неожиданности
15. Строитель - 19 Июня, 2020 - 20:01:18 - перейти к сообщению
LIME пишет:
а ты другой знаешь? агась
Я, начитавшись Джеффри Фридла, проникся его идеей по поводу модификатора U. Суть в том, что Джеф считает его использование дурным тоном, и если можно без него обойтись (как например тут, добавить ? и жадность инвертируется), то лучше обойтись.
LIME пишет:
DeleteCommentsAndSpaces - пример названия для метода, только с маленькой буквы принято в начале
Это я в курсе )) Я не про имя метода говорил, а про название переменной для шаблона. Как по мне, то $commentsPattern мало что поясняет.
LIME пишет:
кстати я бы и utf обозначил, иначе могут быть закономерные неожиданности
А у меня он указан )

 

Powered by ExBB FM 1.0 RC1