我正在尝试用链接替换文本文件中出现的某些字符串。一些实体由一个以上的单词组成,即它们是中间有空格的字符串。我本质上是在寻找一种考虑标点符号并且不区分大小写的正则表达式。我的“解决方案”似乎在绕圈子,我的正则表达式知识对此还不够好:
$pattern = '/[ ._*&^%$#!?!]Anthony Anderson[ ._*&^%$#!?!]/i';
$replacement = '[[Tony Anderson]]';
$subject = 'Anthony anderson. (born August 15, 1970) is an actor, comedian, and writer. He has starred ... the ANTHony Anderson, as well as in Fox sitcom. anthony Anderson. Anthony aNderson? !Anthony AnderSon. Anthony Anderson. . anthony
anderson. Anthony Andersoneon should not match neither should Santhony Anderson ';
echo preg_replace($pattern, $replacement, $subject, -1 );
让我走到这一步:
安东尼·安德森。(生于1970年8月15日)是一名演员、喜剧演员和作家。他主演过..。ANTHony Anderson,以及在福克斯情景喜剧中。。安东尼·安德森。安东尼·安德森不应该与桑托尼·安德森匹敌
但我在寻找:
[托尼·安德森]。(生于1970年8月15日)是一名演员、喜剧演员和作家。他主演过..。[托尼·安德森],以及福克斯情景喜剧。[托尼·安德森]。[托尼·安德森]?![托尼·安德森]。。[托尼·安德森]。安东尼·安德森不应该与桑托尼·安德森匹敌
我遗漏了什么?
发布于 2013-02-17 08:05:30
我想你应该用边界这个词来匹配,\b
。这包括非单词字符,但也包括字符串的开头或结尾:
/\bAnthony Anderson\b/i
https://stackoverflow.com/questions/14916568
复制相似问题