因此,我有一个带有\ x代码的字符串,例如“ \ xA3”,并且以UTF-8编码进行打印将在这种情况下打印出正确的符号,例如£。
但是如何保留原始表示形式,以便仅打印\ xA3?
我已经尝试过使用str_replace("\\x", "\\x", $xcodes)
,也曾经尝试过preg_replace('#\\\\x\w+#', '\\x', $xcodes)
,但是都行不通。
编辑1: 请注意,这些字符串来自外部来源,因此在PHP中使用单引号/双引号没有区别。一旦直接按原样打印它们,这些字符就会转换为符号,这就是为什么我想找到一种保留\ x代码并查看原始显示的原因。
编辑2: 字符串来自用户代理,带有\ xA3 \ xA9之类的代码(是的,Shellshock漏洞测试),因此当我运行以下命令时:
$ua = $_SERVER['HTTP_USER_AGENT'];
// Prepare query with PDO, "insert into user_agents (values) values (:ua)"
// Define placeholder :ua as string $ua.
// Execute insert query.
MySQL将返回“无效的字符串值,\ xA3 \ xA9”错误。这是为什么我要保留十六进制代码表示形式的部分原因,而且还可以使我看到不可打印的字符。
因此,我看到的是“ Chrome 70.45 \ Ax3 \ xA9”,而不是“ Chrome 70.45 [不可打印字符]”。