PHP: заменить все вхождения «[CODE] ... [/ CODE]» в строке - PullRequest
3 голосов
/ 17 ноября 2011

У меня есть такая строка:

Here is my code sample, its not too great:

[CODE]
<?php
    echo "Some testing...";
?>
[/CODE]

I hope you enjoy.

Теперь я хочу заменить ВСЕ вхождения [CODE] ... [/ CODE] на возвращаемое значение highlight_string($content_of_CODE).Пара [CODE] .. [/ CODE] может появляться в строке несколько раз.

Как решить эту проблему, не используя eval?

Спасибо за помощь!

Ответы [ 3 ]

8 голосов
/ 17 ноября 2011

Предполагая, что [CODE] блоки не являются вложенными, preg_replace_callback() - идеальный кандидат.

preg_replace_callback('/\[CODE\](.*?)\[/CODE\]/', 'highlight_string');
0 голосов
/ 17 ноября 2011

content_of_CODE = reg_replace ('/ [! \ S +!] | [\ S * / * CODE] /', '', $ content_of_CODE);

0 голосов
/ 17 ноября 2011

Используйте это регулярное выражение:

(?s)\[CODE\].*?\[/CODE\]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...