2013-04-12 98 views
2

我試圖找到ASCII字符的十六進制表示的原始形式的模式。一個例子輸入如下所示(撇號包括):preg_match_all():原始ASCII十六進制匹配

'\x61\x62\x63\x87\x72\x52' 

'\x61\x62\x63\x64\x61\x42\x93\x3a' 

的事情是,\x61\x62\x63總是相同的。我嘗試過許多不同的模式,爲前:

'/\'\\x61\\x62\\x63(.+)\'/i' 

'/\'\x61\x62\x63(.+)\'/i' 

和各種替代(.+)但我不能讓它工作的權利。

如果有人能幫助我,我將非常感激。

PS。請注意,輸入包含一個十六進制表示的ASCII字符。

+1

如何不工作的權利?你得到了什麼?你期望什麼? – Qtax

回答

1

要在你需要使用\\,並且包括在你需要使用\\正則表達式的單一\一個PHP字符串中的一個\。結合這些要求和PHP正則表達式中的單個反斜槓將看起來像\\\\。請嘗試以下操作:

$pattern = "/'\\\\x61\\\\x62\\\\x63(.+)'/i"; 

例如:

preg_match_all($pattern, "'\\x61\\x62\\x63\\x64\\x61\\x42\\x93\\x3a'", $matches); 
print_r($matches); 

輸出:

Array 
(
    [0] => Array 
     (
      [0] => '\x61\x62\x63\x64\x61\x42\x93\x3a' 
     ) 

    [1] => Array 
     (
      [0] => \x64\x61\x42\x93\x3a 
     ) 

) 

ideone:http://ideone.com/RIDa64