0

サブジェクト文字列 'r r' 内のパターン文字列 '/r/' を、'"\\23"' や '[4]' などの所定の置換に置き換えたいと考えています。だから(私のreplacements配列のサブセットのみを示しています)私は試します:

$subject = 'r r';
$replacements = array('"\\23"', '[4]');
$replacements = array_map('preg_quote', $replacements);
print_r($replacements);

foreach($replacements as $replacement){
    $subject = preg_replace('/r/', $replacement, $subject, 1);
}

echo $subject;

必要な文字列は '"\\23" [4]' ですが、'"\23" \[4\]' が返されます。これは文字が欠落しており、文字が追加されています。

PHPには、ここで機能するエスケープ機能がありますか? どうすればいいですか?

注: preg_quote 行がない場合、結果は '"" [4]' になります。

4

1 に答える 1