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"
的结果相同。
请注意,这 not 与 escaped 转义 完全相同;即 "\300"
将导致文字 0
而上面的代码将转换它。
如果您想要 所有 双引号字符串的可能规则而无需手动重新实现它们,您最好的选择是简单地 eval("return \"$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"
的结果相同。
请注意,这 not 与 escaped 转义 完全相同;即 "\300"
将导致文字 0
而上面的代码将转换它。
如果您想要 所有 双引号字符串的可能规则而无需手动重新实现它们,您最好的选择是简单地 eval("return \"$string\"")
,但它有一个数字也有警告。