如何替换由MySQL和PHP生成的JSON字符串中的回车符?

3
我卡在细节上无法前进:
//1 - get mysql results into array
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {

    array_push($my_array, $row['fruit_name']);

}

//2 - sort array
sort($my_array);

//3 - convert array to json
json_encode($my_array);

输出结果:

['香蕉\r', '苹果\r', '橙子\r']



我尝试使用 str_replace("\r", "", $my_array) 来删除 \r,但没有成功。
似乎 str_replace 对于任何替换都不起作用。

谢谢!


你的输入是什么?请在你的问题中写下来。 - sandeepsure
4个回答

3

您需要进行两次转义

str_replace("\\r", "", $my_array);

0

您没有正确使用str_replace

在PHP中,如果您需要匹配字面反斜杠,则需要一起使用4个反斜杠。

试试这个:

$json = json_encode($my_array);

str_replace("\\\\r", "", $json);


奇怪,我的代码可以工作,其中4个反斜杠有效,而2个则无效。使用4个反斜杠后,我得到了这个:["banana", "apple", "orange"]。而使用2个反斜杠后,我得到了这个:["banana\","apple\","orange\"] - Ashish Choudhary
可能只是我的php配置或类似的问题。 - Tadas V.

0

试试这个

sort(str_replace("\\r", "", $my_array));

str_replace("\\\\r", "", $json);`

0

在使用array_push之前,您应该考虑删除回车符。先添加回车符再将其删除是不合逻辑的。

while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
   array_push($my_array, str_replace("\r", '', $row['fruit_name']));
}

//2 - sort array
sort($my_array);

//3 - convert array to json
json_encode($my_array);

示例代码

<?php
$array = array(
    "xxx\r",
    "yyy\r"
);

echo json_encode($array) . "\n";

array_walk($array, function(&$item, $key){
    $item = str_replace("\r", '', $item);
});

echo json_encode($array) . "\n";
?>

结果

["xxx\r","yyy\r"]
["xxx","yyy"]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接