|
|
|
| Я никак не могу понять как организуется последовательная (конвеерная)
обработка текста. То есть мне надо научитс\ься выделять из текста части из этих частей подчасти,
из подчастей под-подчасти, заменять их и ставить в строку.
Ну, самый элементарный пример:
Выделить из файла PHP код
Затем из этого кода убрать комментарии.
Я понимаю, что первую задачу можно сделать так:
'/<\?php.*\?>/s'
а вторую
'/(\/)+(\/).*?\n/'
но их ведь надо использовать последовательно. Как этого добиться?
И ещё. Первое выражение выделит весь отрезок текста от первого PHP кода до последнего,
а надо чтобы каждый кусочек обработался, не захватывая html | |
|
|
|
|
|
|
|
для: Eugene77
(20.09.2007 в 20:10)
| | Для подобных задач обычно используют preg_replace_callback() | |
|
|
|
|
|
|
|
для: Unkind
(20.09.2007 в 20:32)
| | >Для подобных задач обычно используют preg_replace_callback()
спасибо за совет, но, признаться после чтения инструкции меня пока не посетило никакое озарение. Мне бы примерчик. Чего-то не хватает, чтобы я понял как это всё работает.
Искра нужна... | |
|
|
|
|
|
|
|
для: 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;
?>
|
| |
|
|
|
|
|
|
|
для: Unkind
(20.09.2007 в 23:12)
| | Ага.
Спасибо!
Вот теперь вроде в ощих чертах понял,
хоть пока и не работает, как надо, но
ясно как этим пользоваться.
Ещё раз спасибо!
Примеры всегда быстрей проясняют дело. | |
|
|
|
|
|
|
|
для: Unkind
(20.09.2007 в 23:12)
| | А спецсимвол ? сейчас что не экранируется? | |
|
|
|
|
|
|
|
для: Faraon
(21.09.2007 в 10:56)
| | Да, извиняюсь. Паттерн не подправил. | |
|
|
|
|
|
|
|
для: Unkind
(21.09.2007 в 11:41)
| | Ну, я вообще-то другие комментарии имел в виду..
Но это не важно.
Спасибо, сделал уже что хотел.
Главное ведь общий принцип понять, а дальше можно и самому... | |
|
|
|