PHP preg_replace for hex

时间:2015-12-08 12:17:04

标签: php regex preg-replace

我尝试使用preg_replace()删除字符串中的所有十六进制字符(仅包含小写字母):

$line = "sjdivfriyaaqa\xd2vkmpcuyyuen";
$line = preg_replace('/\\x[0-9a-f]{2}/', '', $line);
echo($line);

根据我的理解,这应该是sjdivfriyaaqavkmpcuyyuen$line已移除\xd2),但它与原始$line相呼应。为什么呢?

2 个答案:

答案 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);