我正在尝试找到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字符的十六进制表示。
答案 0 :(得分: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