鑑於字符串{{esc}}"Content"{{/esc}} ... {{esc}}"More content"{{/esc}}
我想輸出\"Content\" ... \"More content\"
例如,我試圖逃避字符串中的引號。 (這是一個人爲的例子,不過,這樣的東西,如「只是使用這個庫做」的答案將是無益的。)preg_replace_callback正則表達式問題,與(。*?)匹配返回數組
這是我目前的解決方案:
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"
)
,或者對於第二場比賽,
Array
(
[0] => {{esc}}"More content"{{/esc}}
[1] => "More content"
)
我的問題是:爲什麼我的正則表達式會導致$m
成爲一個數組?有沒有什麼辦法可以將$m[1]
的結果看作是一個變量$m
?
這是記錄的行爲,所以第二個問題的答案是「否」。 –
呃,它在[manual](http://php.net/preg_replace_callback)? –
唉,我沒看到有關「括號內的子表達式」的內容。謝謝! –