我有什么:
$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必须转换为链接。
问题:
我无法在第一行和第四行
上获得错误结果答案 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; )