Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удалить комментарии из CSS 
V
    Опции темы
SergV
Дата 2.8.2010, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 4.8.2006
Где: Германия

Репутация: нет
Всего: 1



Привет!

Помогите с регуляркой по удалению коментов из ксс.
Решил сделать небольшой пхп скрипт, для объединения нескольких отдельных ксс файлов в один, с очисткой их от комментарием и удалением всех пробелов, табулейтов и переносов строки. Всё работает до одного момента, коменты удаляются нормально до первых упоминаний / - слешей в урлах, и после этого всё валится, удаляются не коменты а что попадает до следующего слеша.

код регулярки такой, взял из примера по чистке от скриптов и переделал.
Код

$text.=preg_replace("'/*[^ ]*/.*? */'si",'',$file);


коменты такого типа /* text */, тоесть надо удалить всё это хозяйство, и только это, а удаляются все слеши, а не набор слэш+звезда.
Перепробовал кучу вариантов, перерыл всё что можно, но так и не понял, как сделать, чтобы только коменты удалялись.  :(
PM   Вверх
skyboy
Дата 2.8.2010, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



символ "*" сам по себе означает "повторить предыдущий символ/группу 0 и более раз"
потому "/*" означает 0 и более подряд идущих обратных слешей.
чтоб "*" считался "просто символом", его надо экранировать: либо "/\*", либо "/[*]"
PM MAIL   Вверх
programming
Дата 2.8.2010, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 20.6.2008

Репутация: 1
Всего: 1



удалить все комменты надо?
Код

preg_replace('/\/\*.*?\*\//si','',$file);

--------------------
<удалено администрацией>
PM MAIL   Вверх
SergV
Дата 3.8.2010, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 4.8.2006
Где: Германия

Репутация: нет
Всего: 1



Цитата

символ "*" сам по себе означает "повторить предыдущий символ/группу 0 и более раз"
потому "/*" означает 0 и более подряд идущих обратных слешей.
чтоб "*" считался "просто символом", его надо экранировать: либо "/\*", либо "/[*]" 

Да экранировал я его тоже, как и слэш, да только немного не дощёл до этого варианта, что привёл programming, а был почти рядом. Но всё равно спасибо, на будущее попробую запомнить.

programming, большой респект, всё сработало как надо. Я к этому варианту было подошёл, да только не заэкранировал *, поэтому у меня не сработало, и я дальше полез в дебри.

Это сообщение отредактировал(а) SergV - 3.8.2010, 15:46
PM   Вверх
IgorIV
Дата 3.8.2010, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



Поделись велосипедом smile
PM MAIL   Вверх
SergV
Дата 3.8.2010, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 4.8.2006
Где: Германия

Репутация: нет
Всего: 1



Цитата

Поделись велосипедом 

Это пока не велосипед, а самокат. ;)

Код

$css = dir( dirname(__FILE__).'/css' );
$text = '';

// Проходим все ксс файлы, кроме ieonly.css и css_style.css
while ( false!=( $entry=$css->read() ) ) :
  if ( strpos( $entry, '.css' ) && ( $entry != 'ieonly.css' && $entry != 'css_style.css' ) ) :
    $file=file_get_contents(dirname(__FILE__)."/css/".$entry);

    // Чистим от комментариев
    $text.=preg_replace('/\/\*.*?\*\//si','',$file);
  endif;
endwhile;

// Чистим от пробелов, переносов и прочего, если надо, если нет, то закоментировать
$text=preg_replace('[\s|\n|\r|\t ]','',$text);

// Открываем файл и записываем
$file = fopen ("css/css_style.css","r+");
  if ( !$file ) :
    echo("Ошибка открытия файла");
  else:
    fputs ( $file, $text);
  endif;
fclose ($file);


Думаю понятно что к чему. 

Это сообщение отредактировал(а) SergV - 3.8.2010, 20:18
PM   Вверх
IgorIV
Дата 3.8.2010, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



Вопрос, это всё на лету делается? То есть, грубо говоря каждую секунду - для каждого пользователя?
PM MAIL   Вверх
SergV
Дата 4.8.2010, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 4.8.2006
Где: Германия

Репутация: нет
Всего: 1



Цитата

Вопрос, это всё на лету делается? То есть, грубо говоря каждую секунду - для каждого пользователя? 

Да, потому что это не законченный скрипт, а всего лишь заготовка, которая предназначена лишь для разового так сказать использования. То есть сделал шаблон, один раз запустил, и файл готов, и он используется шаблоном, большего пока от него не требуется. Да и зачем использовать такой скрипт при каждом посещении страницы?

Это сообщение отредактировал(а) SergV - 4.8.2010, 15:31
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0747 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.