preg_replace с функцией - PullRequest
       22

preg_replace с функцией

2 голосов
/ 10 ноября 2009

У меня есть некоторый HTML, который запускается через PHP:

<a href="?char=">&</a>

и я хочу использовать preg_replace для замены первого & значением urlencode d. Тем не менее:

preg_replace("/char=\">(.*?)<\/a>/", "char=".urlencode("$1")."\">$1</a>", $links);

Но это дает мне значение $1 вместо ожидаемой обратной ссылки. Как я могу сделать то, что я пытаюсь сделать (сделать вывод похожим на <a href="?char=%26">&</a>)?

Ответы [ 2 ]

3 голосов
/ 10 ноября 2009

Вы можете использовать модификатор e в своем регулярном выражении или использовать вместо него функцию preg_replace_callback (см. Документ).

1 голос
/ 10 ноября 2009

Да, оба e модификатор и preg_replace_callback функциональные подходы могут сделать работу.
Я лично предпочитаю однострочное решение:

preg_replace ( "/ символ = \"> (. *?) / е», 'Символ = ". UrlEncode ( "$ 1"). "\\"> $ 1" ', $ ссылки);

...