PHP将双引号字符串转换为单引号字符串

时间:2015-05-08 12:27:29

标签: 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

我想要case 2的输出,我有单引号$ str变量。此变量由XML字符串解析填充。并且该XML字符串保存在txt文件中。

(这里\ 300是À(拉丁字符)字符的编码,我无法控制它。)

请不要给我解决上面的静态字符串

提前致谢

2 个答案:

答案 0 :(得分:2)

这样做:

$string = '\300';

$string = preg_replace_callback('/\\\\\d{1,3}/', function (array $match) {
    return pack('C', octdec($match[0]));
}, $string);

它匹配反斜杠的任何序列,后跟最多三个数字,并将该数字从八进制数转换为二进制字符串。其结果与"\300"的结果相同。

请注意,对于转义转义的工作方式完全相同;即"\\300"将导致文字\300,而上述代码将转换它。

如果您想要所有,可以使用双引号字符串的可能规则,而不是手动重新实现它们,最好的办法是简单eval("return \"$string\""),但这也有一些警告。< / p>

答案 1 :(得分:-3)

愿你正在寻找这个

$str = 'Test \300';  // Single Quoted String
echo json_encode(stripslashes($str)); // output: Test \\300
相关问题