2013-06-24 3 views
0

Что у меня есть:Как preg_replace пробелы до и после слова

$text = " 
[email protected]@staticword - False result 

[email protected] - True result 

[email protected] [email protected] [email protected] - True result 

[email protected]@[email protected]@staticword - False result 

[email protected] staticword - False result 

[email protected] - True result 

[email protected] [email protected]  [email protected] - True result"; 

$text = preg_replace('/(\s|^\s|\w*[a-zA-Z_]+\w*)@staticword($|\s)/', '\2<img src="image.png" border="0" alt="" /><a href="http://\1.site.com/"><b>\1</b></a>', $text); 

Результат:

echo $text; 

Все Истинные результаты должны быть преобразованы в ссылки и все FALSE нет.

preg_replace должен поймать «что-то @ статическое слово» и преобразовать его в ссылку, с пробелами до и после или без пробела в конце.

Пример:

1 линия - нет ссылки - простой текст

2 линия привет @ staticword должны быть преобразованы в ссылки.

Проблема:

я не могу получить ложные результаты на 1-й линии и 4-й строке

ответ

1

Вы можете использовать этот шаблон:

$pattern = '~(?<[email protected])\b([^\[email protected]][email protected])\b([email protected])~'; 
$replacement = '<img src="image.png" alt="" /><a href="http://$1.site.com/">$1</a>'; 
$text = preg_replace($pattern, $replacement, $text); 

(и использовать CSS вместо границы = "0" и <b>)

+0

большое спасибо за сохранение моего потерянного времени :) !! вы являетесь мастером регулярных выражений: p – devcline

Смежные вопросы