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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
nikoshot
Отправлено: 16 Июня, 2020 - 15:09:17
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $ocfilter = file_get_contents('css/style.css');
  4. echo $ocfilter;
  5. ?>
  6.  

На входе я принимаю файл.. и через этк конструкцию я его вставляю в шаблон...
Как можно что сделать что бы файл все данные были в одну строку..
Как я понимаю нужно удалить пробелы и переносы и табы..
Может есть какая то функция
Подскажите кто знает...
 
 Top
DlTA
Отправлено: 16 Июня, 2020 - 15:18:13
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




preg_replace(...)
 
 Top
Строитель Модератор
Отправлено: 16 Июня, 2020 - 15:37:04
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




nikoshot,
PHP:
скопировать код в буфер обмена
  1. $ocfilter = file_get_contents('css/style.css');
  2.  
  3. echo preg_replace(['~\s+~u', '~/\*.*?\*/~'], '', $ocfilter);
Второй шаблон '~/\*.*?\*/~' удалит ещё и комментарии. Если их нужно оставить - удалите второй шаблон.
 
 Top
nikoshot
Отправлено: 16 Июня, 2020 - 17:55:03
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




Строитель пишет:
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);
Второй шаблон '~/\*.*?\*/~' удалит ещё и комментарии. Если их нужно оставить - удалите второй шаблон.


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

Сам разобрался.. вместо '' поставил ' '
Спасибо! За помщь)
 
 Top
Vladimir Kheifets
Отправлено: 18 Июня, 2020 - 09:29:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Строитель пишет:
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);

Удачи!

(Отредактировано автором: 18 Июня, 2020 - 09:32:53)

 
 Top
LIME
Отправлено: 19 Июня, 2020 - 16:55:10
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Vladimir Kheifets чтож так сложно
вопрос решен уже попроще
nikoshot пишет:
Сам разобрался.. вместо '' поставил ' '
Спасибо! За помщь)

'~[\r\n\t]+~u' => ''
это так же может привести к невалидному синтаксису теоретически, а потому и усложнять третьим шаблон нет нужды
Удачи!
 
 Top
Строитель Модератор
Отправлено: 19 Июня, 2020 - 18:28:40
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




LIME
Удачи!
Радость
 
 Top
LIME
Отправлено: 19 Июня, 2020 - 18:34:10
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель '~/\*.*?\*/~'
а если просто жадность убрать? можно? ато глазам больно чутьчуть от закорючег)
(Добавление)
и * на+
опять же чтоб не сливалось в глазах))
 
 Top
Строитель Модератор
Отправлено: 19 Июня, 2020 - 19:07:56
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




LIME пишет:
а если просто жадность убрать?
Не, иначе будет захват от первого /* до последнего */, т.е. захватит и промежуточные комментарии, и css-селекторы.
LIME пишет:
и * на+
Теоретически можно, но если попадётся вариант /**/, то он не будет вырезан. Именно поэтому *.
 
 Top
LIME
Отправлено: 19 Июня, 2020 - 19:30:19
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель пишет:
Не, иначе будет захват от первого /* до последнего */,
а что тогда делает отмена жадности? ээ))
что такое жадность?
Строитель пишет:
но если попадётся вариант /**/, то он не будет вырезан
и пусть
наша цель сжать? пофиг на 4 байта в аномально редком кэйсе
(Добавление)
хотя есть другой вариант
положить шаблон в переменную и говорящим именем и тогда надо будет только один раз его прочитать и не ломать глаза каждый раз глядя на парад закорючег пли любой доработке
что дорабатываешь только то и читаешь
 
 Top
Строитель Модератор
Отправлено: 19 Июня, 2020 - 19:36:13
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




LIME пишет:
а что тогда делает отмена жадности? ээ))
Ищет до первого соответствия */ и прерывает цикл.
LIME пишет:
что такое жадность?
Ну ты ведь уже знаешь, что это такое? Закатив глазки
LIME пишет:
и пусть
наша цель сжать? пофиг на 4 байта в аномально редком кэйсе
Если ТС это устраивает, то да )
 
 Top
LIME
Отправлено: 19 Июня, 2020 - 19:38:23
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель пишет:
Ищет до первого соответствия */ и прерывает цикл.
азначит что? правильно
Строитель пишет:
будет захват от первого /* до последнего */,
не случится
очнись эй)) отмена жадности какраз уберет ? из шаблона
 
 Top
Строитель Модератор
Отправлено: 19 Июня, 2020 - 19:39:36
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




LIME пишет:
хотя есть другой вариант
положить шаблон в переменную и говорящим именем и тогда надо будет только один раз его прочитать и не ломать глаза каждый раз глядя на парад закорючег пли любой доработке
что дорабатываешь только то и читаешь
А как назвать переменную в этом случае, DeleteCommentsAndSpaces? Может ты и прав, так понятнее для программиста.
(Добавление)
LIME пишет:
отмена жадности как раз уберет ? из шаблона
Ты про модификатор U?
 
 Top
LIME
Отправлено: 19 Июня, 2020 - 19:50:55
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Строитель пишет:
Ты про модификатор U?
а ты другой знаешь? агась
DeleteCommentsAndSpaces - пример названия для метода, только с маленькой буквы принято в начале
а для паттерна например
PHP:
скопировать код в буфер обмена
  1. $commentsPattern = '~/\*.*?\*/~';
  2.  
кстати я бы и utf обозначил, иначе могут быть закономерные неожиданности
 
 Top
Строитель Модератор
Отправлено: 19 Июня, 2020 - 20:01:18
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


Помог: 73 раз(а)




LIME пишет:
а ты другой знаешь? агась
Я, начитавшись Джеффри Фридла, проникся его идеей по поводу модификатора U. Суть в том, что Джеф считает его использование дурным тоном, и если можно без него обойтись (как например тут, добавить ? и жадность инвертируется), то лучше обойтись.
LIME пишет:
DeleteCommentsAndSpaces - пример названия для метода, только с маленькой буквы принято в начале
Это я в курсе )) Я не про имя метода говорил, а про название переменной для шаблона. Как по мне, то $commentsPattern мало что поясняет.
LIME пишет:
кстати я бы и utf обозначил, иначе могут быть закономерные неожиданности
А у меня он указан )
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB