PHP-从JSON响应中删除\n
我有一个来自API调用的(简化的)JSON响应,如下所示PHP-从JSON响应中删除\n,php,json,newline,Php,Json,Newline,我有一个来自API调用的(简化的)JSON响应,如下所示 {"status":true,"action_values":"{\n \"range_from\": \"0\",\n \"range_to\": \"0\"\n}"} 我正在尝试使用PHP从上面删除\n字符,但它似乎不起作用 我尝试: $trimmed = str_replace("\n", "", $response); 其中,$response是我的JSON字符串,如上所述。但这不会删除/替换\n字符 无需删除\n/新行 相反
{"status":true,"action_values":"{\n \"range_from\": \"0\",\n \"range_to\": \"0\"\n}"}
我正在尝试使用PHP从上面删除\n字符,但它似乎不起作用
我尝试:
$trimmed = str_replace("\n", "", $response);
其中,$response是我的JSON字符串,如上所述。但这不会删除/替换\n字符 无需删除
\n
/新行
相反,您应该使用json\u decode()
对字符串进行解码,然后您可以解码range\u from
值,该值也是原始json中的json编码:
<?php
$str = '{"status":true,"action_values":"{\n \"range_from\": \"0\",\n \"range_to\": \"0\"\n}"}';
$dec = json_decode($str, true);
var_dump(json_decode($dec['action_values'], true));
.我推荐@jeroen的解决方案,因为它使用PHPs本机函数来处理JSON 然而,既然您提出了这个问题,我感觉您还没有完全理解为什么您的解决方案不起作用 正如@B001在评论中指出的,您需要“\\n”来完成此任务:
$trimmed = str_replace("\\n", "", $response);
原因是“\n”表示新行字符,而“\\n”表示字符串“\n”
尝试下面的代码,您将看到不同之处
print("-----");
print("\n");
print("-----");
print("\\n");
print("-----");
print("\"");
这将产生以下输出:
-----
-----\n-----"
hello
world
hello \n world\n
原因是代码中“\”字符的每个实例都会启动一个控制字符。例如“\n”表示换行符“\r”表示回车符“\t”表示制表符“\”表示由“”定义的字符串中的“-字符“\”,以及“\”表示实际反斜杠字符
因此,如果要创建包含\n的实际字符串,则必须告诉解释器您实际需要的是\-字符,而不是由\创建的控制字符以及后面的任何字符。这是通过使用双反斜杠“\\”来完成的,它是实际反斜杠字符串的字符串表示形式。这叫做“逃跑”
在本例中,$response变量中包含实际字符串,因此必须使用转义字符作为模式
最后让我解释一下“\n”和“\n”之间的区别。
PHP中有两种创建字符串的方法:
$str1 = "hello \n world\n";
$str2 = 'hello \n world\n';
print($str1);
print($str2);
$name = "Daniel";
$age = 18;
$sentence = "My Friend $name is $age years old.";
print($sentence);
这两个变量都将包含一个字符串,但是“-字符串表示PHP解释器应解释包含的字符串,而“-字符串则按原样提供字符串。因此,上面的示例将产生以下输出:
-----
-----\n-----"
hello
world
hello \n world\n
这表明以下代码还将删除字符串中的\n实例,因为“\n”将包含实际字符串而不是控制字符:
$trimmed = str_replace('\n', "", $response);
“-字符串的这种解释甚至允许在字符串中插入变量:
$str1 = "hello \n world\n";
$str2 = 'hello \n world\n';
print($str1);
print($str2);
$name = "Daniel";
$age = 18;
$sentence = "My Friend $name is $age years old.";
print($sentence);
并将导致:
My Friend Daniel is 18 years old.
str\u replace(\\n“,…
对我有效似乎action\u values
本身就是一个json。str\u replace(\\n“,…为我做了这个把戏。谢谢B001。如果你将此标记为答案,我会将其标记为已接受。