我正在尝试用链接替换文本文件中的某些字符串。一些实体由多个单词组成,即它们是在其间具有空格的字符串。我基本上正在寻找一个将标点符号考虑在内并且不区分大小写的正则表达式。我的'解决方案'似乎只是绕圈子而且我的正则表达式知识对此不够好:(
$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,以及Fox情景喜剧。[[Tony Anderson]] [[Tony Anderson]] [[Tony Anderson]] Anthony Anderson。 。安东尼安德森。 Anthony Andersoneon不应该与Santhony Anderson相提并论但我在追求:
<[> [[Tony Anderson]]。 (1970年8月15日出生)是演员,喜剧演员和作家。他主演了[[Tony Anderson]]以及Fox情景喜剧。 [[托尼安德森]]。 [[托尼安德森]]? ![[托尼安德森]]。 [[托尼安德森]]。 。 [[托尼安德森]]。 Anthony Andersoneon不应该与Santhony Anderson相提并论我错过了什么?
答案 0 :(得分:2)
我认为你想使用边界一词来匹配,\b
。这包括非单词字符,但也包括字符串的开头或结尾:
/\bAnthony Anderson\b/i