0

重複の可能性:
正規表現の修飾子が不明です

皆さん、preg_replace を使用してシーケンスの 4 番目のスラッシュをハッシュマークに置き換えようとすると、不明な修飾子の警告 (失敗) が表示されます。

$value['path'] = preg_replace("/((.*?)(/)){4}/e", '(preg_replace("//$/", "", "\0"))#', $value['path']);

エラー:

Warning: preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]: Unknown modifier ')'
4

1 に答える 1

2

区切り文字として使用する場合は、正規表現の途中で/すべてエスケープする必要があります。/

個人的には()、区切り文字として使用するのが好きです。これは、エスケープを必要とせず、最初の一致 (インデックス 0) がパターン全体であることを思い出させるからです。

補足:e修飾子は使用しないでください。preg_match_callback代わりに使用してください。

また、次のようにして、スラッシュの 4 番目のインスタンスを置き換えることができます。

$parts = explode("/",$value['path'],5);
$last = array_pop($parts);
$value['path'] = implode("/",$parts)."#".$last;
于 2012-10-19T00:40:03.030 に答える