我使用此行在网址中搜索带有网址的名称。
$name = "xxx";
$text = "my name is xxx en my website is http://xxx.something.com";
$text = preg_replace("/\b(".preg_quote($name, "/").")\b/i", $url, $text);
如何更改此正则表达式以忽略文本中的网址
答案 0 :(得分:1)
1)您可以使用正则表达式查找所有网址(例如http://snipplr.com/view/2371/regex-regular-expression-to-match-a-url/) - 记住他们的位置和长度
2)使用正则表达式查找单词的所有出现并记住位置和长度
3)浏览2)的结果并检查该单词是否不在网址中。
答案 1 :(得分:1)
不完全是您正在寻找的但可能是这个帮助:
将xxx
替换为yyy
当且仅当xxx
被空格包围或者是否位于字符串的开头或结尾时。
<?
$name = "xxx";
$text = "xxx my name is xxx en my website xxx is http://xxx.something.com xxx";
$text = preg_replace("%(?<=^| )".$name."(?= |$)%i", "yyy", $text);
echo $text."\n";
//yyy my name is yyy en my website yyy is http://xxx.something.com yyy
?>
如果PHP支持变量长度看起来断言,那会更容易;因为那时我们可以使用更准确的(?<!http://[^ ]+)\bxxx\b