|
|
|
| Добрый день, прошу помощи.
Работаю c PHP.
Есть текст, в нем какие-то участки выделены тегами [PAS] и [/PAS], как Вы поняли, это код на Паскале. И есть функция выделения кода Паскаля. Нужно как-то выделить то, что находится между этими тегами, обработать их функцией выделения и вставить обратно.
Получается что-то вроде:
$text = ereg_replace('\[PAS\](.*)\[/PAS\]', DrawCodePas('@$1'), $text);
|
(естественно, это выражение не работает)
Как это можно сделать? | |
|
|
|
|
|
|
|
для: Wyfinger
(11.03.2007 в 07:07)
| | Вместо ereg-функций, которые будут исключены в PHP 6 из ядра и даже основных расширений, лучше использовать preg-функции, в состав которых входит функция preg_replace_callback(), позволяющая использовать в качестве замены функцию обратного вызова. | |
|
|
|
|
|
|
|
для: cheops
(11.03.2007 в 14:41)
| | Скажите, какую маску мне использовать?
не действует, если в коде присутствует перевод строки. | |
|
|
|
|
|
|
|
для: Wyfinger
(11.03.2007 в 07:07)
| |
<?
$text = preg_replace("/\[PAS\](.+?)\[\/PAS\]/sie", "DrawCodePas(\"\\1\")", $text);
?>
|
| |
|
|
|
|
|
|
|
для: Poison
(12.03.2007 в 08:59)
| | Спасибо, просто мало знаком с Perl-Style RegExpr. Не знал о ключе /s. | |
|
|
|