PHP preg_replace 十六进制

PHP preg_replace for hex

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

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

据我了解,这应该回显 sjdivfriyaaqavkmpcuyyuen$line 并删除了 \xd2)但它回显了原始的 $line。为什么?

这会起作用

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

您需要另一个黑斜杠在字符串中转义它,如果您尝试立即回显它,您会发现它是空的。

事实上,双引号 "" 解释转义字符 \ 意思是 "\xd2" 例如 'Ò'

使用简单的引用 '' 你的代码没问题:

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