0

私はこのような文字列を持っています:[name-123456]

この文字列の一致をいくつかの事前定義された文字列に置き換えようとしています。これが私がこれまでに持っているものです:

preg_replace('~\['.$string_to_be_replaced.'\]~', $code_to_replace_it_with, $content);

現在、これはエラーをスローします。角かっこを削除する方法を見つけることができませんでした(文字列の一部であるにもかかわらず)。[name-123456]それらが正規表現で削除されて置き換えられるようにするにはどうすればよいstringofcodeですか?

編集:

$string_to_be_replaced = preg_quote($string_to_be_replaced, "~"); 
$content = preg_replace('~\['.$string_to_be_replaced.'\]~', $str_to_replace_with, $content);

これは単に[name-123456]を返します:p

vardumpは以下を生成します:string(16) "\[name\-123456\]"

4

1 に答える 1

1

最初の問題は、結果を代入しなかった可能性があります。

$content = preg_replace('~...~', $rpl.., $content);

次に、事前に$string_to_be_replaced使用もエスケープする必要があります。とにかく検索文字列にpreg_quote必要です。-

$string_to_be_replaced = preg_quote($string_to_be_replaced, "~");

ところで、[]括弧も処理します。

また、アサーションや複雑なマッチングを行っていない場合はstr_replace()、代替手段になる可能性があります。

于 2013-02-24T16:31:38.073 に答える