Par*_*mar 6 php unicode-string
我知道这个问题多次在这里问过.但这些解决方案对我没用.我今天非常严重地面对这个问题.
// Case 1
$str = 'Test \300'; // Single Quoted String
echo json_encode(utf8_encode($str)) // output: Test \\300
// Case 2
$str = "Test \300"; // Double Quoted String
echo json_encode(utf8_encode($str)) // output: Test \u00c0
Run Code Online (Sandbox Code Playgroud)
我想要case 2的输出,我有单引号$ str变量.此变量由XML字符串解析填充.并且该XML字符串保存在txt文件中.
(这里\ 300是À(拉丁字符)字符的编码,我无法控制它.)
请不要给我解决上面的静态字符串
提前致谢
这会做:
$string = '\300';
$string = preg_replace_callback('/\\\\\d{1,3}/', function (array $match) {
return pack('C', octdec($match[0]));
}, $string);
Run Code Online (Sandbox Code Playgroud)
它匹配反斜杠后跟最多三个数字的任何序列,并将该数字从八进制数字转换为二进制字符串。哪个与什么有相同的结果"\300"。
请注意,这对于转义的转义不会完全相同;ie将产生一个文字,而上面的代码将转换它。"\\300"\300
如果您希望遵循双引号字符串的所有可能规则,而不需要手动重新实现它们,那么最好的选择就是简单地执行eval("return \"$string\""),但这也有一些注意事项。