2017-06-13 99 views
-3

我有一個PHP庫在這裏,我想通過preg_replace_callback替換preg_replace。替換preg_replace通過preg_replace_callback

這是該行:

preg_replace("/=([0-9A-F][0-9A-F])/e", 'chr(hexdec("$1"))', $l) 

,這就是我所做的:

preg_replace_callback("/=([0-9A-F][0-9A-F])/", function($m) { return chr(hexdec($m["$1"])); }, $line); 

但它並沒有奏效。我仍然不明白preg_replace_callback是如何工作的。我也看了許多其他線程:(

誰能幫我請

非常感謝你提前

+0

更換'$ M [ 「$ 1」]'和'$ M [1]'。 –

+0

做的你的print_r在您的回調函數中使用'$ m'數組。你會看到結構是錯誤的。 '$ m [「$ 1」]'應該很可能是'$ m [1]' –

回答

0

您需要使用$m[1]訪問的第二個元素$m數組中:!

preg_replace_callback("/=([0-9A-F][0-9A-F])/", function($m) { return 
    chr(hexdec($m[1])); }, $line 
); 

PHP demo

+0

爲什麼你的答案被標記爲「社區wiki」?是你做的嗎?還是做了其他人?請解釋一下,如果不是太麻煩。 (我剛剛閱讀社區wiki上的一篇Meta帖子,但我沒有看到好處。) – mickmackusa

+0

@mickmackusa:我不想爲回答這樣一個糟糕的問題獲得積分。我正要找到一個愚蠢的問題,沒有時間。 –