0

我有的:

$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" 并将其转换为 link ,前后有空格或末尾没有空格。

例子:

1 行 - 无链接 - 纯文本

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

问题:

我不能在第一行第四行得到错误的结果

4

1 回答 1

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"<b>

于 2013-06-24T02:12:34.780 回答