繁体   English   中英

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

[英]PHP convert double quoted string to single quoted 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是À(拉丁字符)字符的编码,我无法控制它。)

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

提前致谢

这样做:

$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\\"") ,但这也有一些警告。

愿你正在寻找这个

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM