Я использую функцию 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
Проблема здесь – это модификатор 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>