2014-03-24 33 views
1

如何使用preg_replace將只匹配的十六進制值轉換爲十六進制的文本表示形式?preg_replace使匹配的十六進制值顯示爲文本

$string = 'abcd'.hex2bin(23).'abc'.hex2bin(24);

例如str_replace('/[\x20-\x25]/', 'what here?', $string)會得到輸出如下:

abcd[HEX:23]abc[HEX:24] 

正是我想要做的:我在尋找隱藏人物,想展示自己的十六進制值。

回答

1

您需要像preg_replace_callback()這樣的東西,針對所有匹配進行回叫。

嘗試:

$string = 'abcd'.hex2bin(23).'abc'.hex2bin(24); 

$text = preg_replace_callback('/[\\x20-\\x25]/', function($matches) { 
    $string = bin2hex($matches[0]); 
    return "[HEX:{$string}]"; 
}, $string); 
+0

有過這樣不存在觀念的作用。謝謝。這使我的問題100%得到了解決! – Grzegorz