1

テキスト ファイル内の特定の文字列をリンクに置き換えようとしています。いくつかのエンティティは複数の単語で構成されています。つまり、間にスペースが入った文字列です。私は基本的に、句読点を考慮し、大文字と小文字を区別しない正規表現を探しています。私の「解決策」はぐるぐる回っているようで、私の正規表現の知識はこれには十分ではありません:(

$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 Andersoneon は、Santhony Anderson とも一致すべきではありません

しかし、私は後です:

[[トニー・アンダーソン]]。(1970 年 8 月 15 日生まれ) は、俳優、コメディアン、作家です。彼は [[Tony Anderson]] だけでなく、フォックスのシットコムにも出演しています。[[トニー・アンダーソン]]。[[トニー・アンダーソン]]? ![[トニー・アンダーソン]]. [[トニー・アンダーソン]]。. [[トニー・アンダーソン]]。Anthony Andersoneon は、Santhony Anderson とも一致すべきではありません

私は何が欠けていますか?

4

1 に答える 1

2

単語の境界を使用して一致させたいと思います\b。これには、単語以外の文字だけでなく、文字列の最初または最後も含まれます。

/\bAnthony Anderson\b/i
于 2013-02-17T00:05:29.673 に答える