preg_replace: замена с использованием%

Я использую функцию preg_replace, но я не могу понять, как заставить ее работать, функция просто не работает для меня.

Я пытаюсь преобразовать строку в ссылку, если какое-либо слово содержит символ% (процент).

Например, если у меня есть строка «go to% mysite», я бы хотел преобразовать слово mysite в ссылку. Я попробовал следующее …

$data = "go to %mysite"; $result = preg_replace('/(^|[\s\.\,\:\;]+)%([A-Za-z0-9]{1,64})/e', '\\1%<a href=#>\\2</a>', $data); 

… но это не работает.

Любая помощь по этому поводу будет высоко оценена.

благодаря

Juan

Solutions Collecting From Web of "preg_replace: замена с использованием%"

Проблема здесь – это модификатор e , который оценивает замену как php-код и терпит неудачу с фатальной ошибкой


Извлечение атрибута e будет выводиться go to %<a href=#>mysite</a> и если это желаемый результат, вам не нужно ничего менять.

Но я думаю, что preg_replace_callback – это то, что вам действительно нужно, то есть:

 function createLinks($matches) { switch($matches[2]) { case 'mysite': $url = 'http://mysite.com/'; break; case 'google': $url = 'http://www.google.com/'; break; } return "{$matches[1]}%<a href=\"{$url}\">{$matches[2]}</a>"; } $data = "go to %mysite or visit %google"; $data = preg_replace_callback( '/(^|[\s\.\,\:\;]+)%([A-Za-z0-9]{1,64})/', 'createLinks', $data ); 

это приведет go to %<a href="http://mysite.com/">mysite</a> or visit %<a href="http://www.google.com/">google</a>