如何preg_replace单词之前和之后的空格

时间:2013-06-24 01:38:45

标签: php preg-replace

我有什么:

$text = "
 randomword@staticwordrandomword@staticword  - False result 

 randomword@staticword    - True result 

 randomword@staticword randomword@staticword randomword@staticword  - True result 

 randomword@staticworandord@staticwordstauthello@staticwordord@staticword - False result

 randomword@ staticword  - False result

 randomword@staticword - True result 

 randomword@staticword    randomword@staticword      randomword@staticword  - 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;

所有TRUE结果必须转换为链接,所有FALSE都不能。

preg_replace必须捕获“something @ staticword”并将其转换为链接,前后有空格或末尾没有空格。

示例:

1行 - 无链接 - 纯文本

2行hello @ staticword必须转换为链接。

问题:

我无法在第一行第四行

上获得错误结果

1 个答案:

答案 0 :(得分:1)

您可以使用此模式:

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

(并使用css代替 border =“0”&lt; b&gt;