質問: 2 && preg_match('(\(|\[|;[[:space:]])(' . $expr . ')(;|\]|\))', $str))) ``` 自分でいろいろと調べてみた結果、公式サイトにもあるように、デリミタの記述方法が特殊なようなのですが... http://php.net/manual/ja/regexp.reference.delimiters.php このページを参考に試行錯誤したのですがいまいちよくわかりません。そもそも問題点がここにあるので正解なのかもあまり自信がないです。 どういう風にコードを変更すればいいのですか?よろしくお願いします。 必要な情報かわからないのですが、centOS,apache,phpmyadminなどはすべて最新のバージョンです。
回答: PHPの正規表現は文字列で与えますが、デリミタで囲う必要があります。 `'^(' . $expr . ')(;q=[0-9]\\.[0-9])?$'` ではなく、正規表現中に出現しない文字、例えば`/`を使って、 `'/^(' . $expr . ')(;q=[0-9]\\.[0-9])?$/'` のようにします。 詳しくは、入門書の正規表現のところをよんでください。