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

PHP convert double quoted string to single quoted string

我知道这个问题在这里问了很多times.But那些解决方案对我没有用。我今天非常严重地面对这个问题。

// Case 1
$str = 'Test 0';  // Single Quoted String
echo json_encode(utf8_encode($str)) // output: Test \300

// Case 2
$str = "Test 0"; // Double Quoted String
echo json_encode(utf8_encode($str)) // output: Test \u00c0

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

(这里的\300是À(latin Character)字符的编码,我控制不了。)

请不要给我上述静态字符串的解决方案

提前致谢

可能你正在找这个

$str = 'Test 0';  // Single Quoted String
echo json_encode(stripslashes($str)); // output: Test \300

这样做:

$string = '0';

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

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

请注意,这 notescaped 转义 完全相同;即 "\300" 将导致文字 0 而上面的代码将转换它。

如果您想要 所有 双引号字符串的可能规则而无需手动重新实现它们,您最好的选择是简单地 eval("return \"$string\""),但它有一个数字也有警告。