Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Конвеерная обработка. Как?
 
 автор: Eugene77   (20.09.2007 в 20:10)   письмо автору
 
 

Я никак не могу понять как организуется последовательная (конвеерная)
обработка текста. То есть мне надо научитс\ься выделять из текста части из этих частей подчасти,
из подчастей под-подчасти, заменять их и ставить в строку.

Ну, самый элементарный пример:
Выделить из файла PHP код
Затем из этого кода убрать комментарии.
Я понимаю, что первую задачу можно сделать так:
'/<\?php.*\?>/s'
а вторую
'/(\/)+(\/).*?\n/'
но их ведь надо использовать последовательно. Как этого добиться?
И ещё. Первое выражение выделит весь отрезок текста от первого PHP кода до последнего,
а надо чтобы каждый кусочек обработался, не захватывая html

   
 
 автор: Unkind   (20.09.2007 в 20:32)   письмо автору
 
   для: Eugene77   (20.09.2007 в 20:10)
 

Для подобных задач обычно используют preg_replace_callback()

   
 
 автор: Eugene77   (20.09.2007 в 21:34)   письмо автору
 
   для: Unkind   (20.09.2007 в 20:32)
 

>Для подобных задач обычно используют preg_replace_callback()

спасибо за совет, но, признаться после чтения инструкции меня пока не посетило никакое озарение. Мне бы примерчик. Чего-то не хватает, чтобы я понял как это всё работает.
Искра нужна...

   
 
 автор: Unkind   (20.09.2007 в 23:12)   письмо автору
 
   для: Eugene77   (20.09.2007 в 21:34)
 

<?php
function strip_mcomments($match)
{
    return 
preg_replace("|/\*.*\*/|s"""$match[0]);
}

$string "<html><?php\r\nfunction();\r\n/* ... */ \r\n?></html>";

$string preg_replace_callback("/<?php.*?>/s""strip_mcomments"$string);
echo 
$string;
?>

   
 
 автор: Eugene77   (21.09.2007 в 10:42)   письмо автору
 
   для: Unkind   (20.09.2007 в 23:12)
 

Ага.
Спасибо!
Вот теперь вроде в ощих чертах понял,
хоть пока и не работает, как надо, но
ясно как этим пользоваться.
Ещё раз спасибо!
Примеры всегда быстрей проясняют дело.

   
 
 автор: Faraon   (21.09.2007 в 10:56)   письмо автору
 
   для: Unkind   (20.09.2007 в 23:12)
 

А спецсимвол ? сейчас что не экранируется?

   
 
 автор: Unkind   (21.09.2007 в 11:41)   письмо автору
 
   для: Faraon   (21.09.2007 в 10:56)
 

Да, извиняюсь. Паттерн не подправил.

   
 
 автор: Eugene77   (26.09.2007 в 20:26)   письмо автору
 
   для: Unkind   (21.09.2007 в 11:41)
 

Ну, я вообще-то другие комментарии имел в виду..
Но это не важно.
Спасибо, сделал уже что хотел.
Главное ведь общий принцип понять, а дальше можно и самому...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования