正規表現のリストがあります:
suresnes|suresne|surenes|surene
pommier|pommiers
^musique$
^(faq|aide)$
^(file )?loss( )?less$
paris
faq <<< this match twice
私の使用例は、一致した各パターンがユーザーへのリンクを表示するため、複数のパターン マッチングを行うことができます。
これらのパターンを単純なテキスト文字列「パリに住む」/「よくある質問」/「ポム」に対してテストします...
これを行う簡単な方法は、 を使用してすべてのパターンをループするpreg_match
ことですが、パフォーマンスが重要なページでこれを頻繁に行うので、これは見栄えが悪くなります。
これが私が試したことです:これらすべての式をグループ名で1つに結合します:
preg_match("@(?P<group1>^(faq|aide|todo|paris)$)|(?P<group2>(paris)$)@im", "paris", $groups);
ご覧のとおり、各パターンはグループ化(?P<GROUPNAME>PATTERN)
されており、すべてパイプで区切られてい|
ます。
最初のグループ一致のみが返されるため、結果は期待したものではありません。一致が発生すると、解析が停止するように見えます。
私が欲しいのは、一致するすべてのグループのリストです。preg_match_all
どちらも役に立ちません。
ありがとう!