我使用preg_replace来替换可能包含一些URL的文本中的单词列表。 问题是我不想将这些单词替换为url的一部分。preg_replace单词不在url内
这些实施例应该被忽略:
foo.com
foo.com/foo
foo.com/foo/foo
对于一个基本的例子(用php编写),我试图忽略包含.com和可选的斜杠和字符的字符串,使用负面预览屁股ertion,但没有成功:
preg_replace("/(\b)foo(\b)/", "$1bar$2(?!(\w+\.\w+)*(\.com)([\.\/]\w+)*)", $text);
此调用工作之前.COM只是忽略了字。 任何帮助将非常感激。
我不确定如何实现这一点。 只有当第二个选项匹配时,如何才能进行更换? 例如** foo foo.com **应该生成** bar foo.com ** 但您的解决方案会生成** bar foo.com bar ** – savioret
最后,我能够使用您的方法解决问题,但我只能使用preg_replace_callback函数来使用字符串的丢弃部分,并且在回调函数内部决定是处理还是不处理匹配的字符串。 – savioret
很高兴你得到它的工作。我完全错过了你的评论,对不起。 –