{{esc}}"Content"{{/esc}} ... {{esc}}"More content"{{/esc}}
たとえば、出力したい文字列を指定すると、文字\"Content\" ... \"More content\"
列内の引用符をエスケープしようとしています。(ただし、これは不自然な例であるため、「このライブラリを使用して実行してください」などの回答は役に立ちません。)
これが私の現在の解決策です:
return preg_replace_callback(
'/{{esc}}(.*?){{\/esc}}/',
function($m) {
return str_replace('"', '\\"', $m[1]);
},
$text
);
ご覧のとおり、次のように表示されるため、 と言う必要があります$m[1]
。print_r
$m
Array
(
[0] => {{esc}}"Content"{{/esc}}
[1] => "Content"
)
または、2 番目の一致の場合、
Array
(
[0] => {{esc}}"More content"{{/esc}}
[1] => "More content"
)
私の質問は、なぜ私の正規表現が$m
配列になるのですか? $m[1]
結果を単一の変数として取得する方法はあります$m
か?