我尝试使用preg_replace()
删除字符串中的所有十六进制字符(仅包含小写字母):
$line = "sjdivfriyaaqa\xd2vkmpcuyyuen";
$line = preg_replace('/\\x[0-9a-f]{2}/', '', $line);
echo($line);
根据我的理解,这应该是sjdivfriyaaqavkmpcuyyuen
($line
已移除\xd2
),但它与原始$line
相呼应。为什么呢?
答案 0 :(得分:1)
这将有效
$line = "sjdivfriyaaqa\\xd2vkmpcuyyuen";
$new = preg_replace('/\\\x[0-9a-f]{2}/', '', $line);
echo($new);
你需要另一个黑色的字符串才能在字符串中将其转义,如果你立即回复它,你会发现它是空的。
答案 1 :(得分:1)
实际上双引号""
会解释转义的字符\
,例如"\xd2"
为'Ò'
。
使用简单引用''
您的代码就可以了:
$line = 'sjdivfriyaaqa\xd2vkmpcuyyuen';
$line = preg_replace('#\\\x[0-9a-f]{2}#', '', $line);
echo($line);