Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:斜杠变成了“a”;V";当转换为数组时_Php_Arrays_Json_Encode - Fatal编程技术网

PHP:斜杠变成了“a”;V";当转换为数组时

PHP:斜杠变成了“a”;V";当转换为数组时,php,arrays,json,encode,Php,Arrays,Json,Encode,我有一个变量:$link=$rows['link']。 当我重复这句话时,一切都很好。例如: 然后我想用以下代码将此URL保存在一个数组中:$result['video'][]=array('id'=>$id,'link'=>$link) 这里的问题是斜线变成了“V”。例如:echo json_encode($result)给了我: {“视频”:[{“id”:“1”,“链接”:”https://www.ted.com/talks/margaret_heffernan_why_it_s_time

我有一个变量:
$link=$rows['link']。
当我重复这句话时,一切都很好。例如:

然后我想用以下代码将此URL保存在一个数组中:
$result['video'][]=array('id'=>$id,'link'=>$link)

这里的问题是斜线变成了“V”。例如:
echo json_encode($result)给了我:

{“视频”:[{“id”:“1”,“链接”:”https://www.ted.com/talks/margaret_heffernan_why_it_s_time_to_forget_the_pecking_order_at_work},{“id”:“2”,“链接”:https://www.ted.com/talks/simon_sinek_why_good_leaders_make_you_feel_safe},{“id”:“3”,“链接”:https://www.ted.com/talks/regina_hartley_why_the_best_hire_might_not_have_the_perfect_resume},{“id”:“4”,“链接”:https://www.ted.com/talks/sheryl_sandberg_why_we_have_too_few_women_leaders},{“id”:“5”,“链接”:https://www.ted.com/talks/roselinde_torres_what_it_takes_to_be_a_great_leader},{“id”:“6”,“link”:https://www.ted.com/talks/stanley_mcchrystal#t-319307“},{“id”:“7”,“链接”:”https://www.ted.com/talks/stanley_mcchrystal#t-319307“},{“id”:“8”,“链接”:”https://www.ted.com/talks/stanley_mcchrystal#t-319307“},{“id”:“9”,“链接”:”https://www.ted.com/talks/stanley_mcchrystal#t-319307“},{“id”:“10”,“link”:”https://www.ted.com/talks/stanley_mcchrystal#t-319307“}]}

有人知道为什么会这样吗

谢谢!!:)

你可以通过

json_encode($result, JSON_UNESCAPED_SLASHES);

这不是问题,当您编码任何带有“/”json的字符串时,会自动添加一个反向索利多字符“\”,最后一个字符串变成类似“\/”的东西。这是完全合法的json。“\/”将自动转换为“/“当您将取消对字符串的序列化时。如果输出是由适当的JSON解析器进行非序列化的,那么为什么还要担心呢

如果您坚持在输出中使用“\/”,则可以在打印时使用
JSON\u UNESCAPED\u斜杠。
类似于:
json\u encode($eg\u url,json\u UNESCAPED\u SLASHES)


我不明白为什么这是个问题,你对它们进行json编码,它们就变成了转义斜杠
\/
,然后当你把它们解码回来,它们就变成了普通斜杠。我想这就是转义斜杠,不是吗?我在你的报价栏中看不到任何内容,但它们后面跟/看起来像V,但实际上是\/这不是“V”,而是“\/”(即
前斜杠
后跟
反斜杠
)用于(转义前斜杠)。谢谢!!工作完美:)
<?php
/*
 * @author Saurabh Pandey
 * Escaping the reverse-solidus character ("/", slash) is optional in JSON.
 *
 * This can be controlled with the JSON_UNESCAPED_SLASHES flag constant in PHP.
 *
 */    

$eg_url = 'http://www.trillbit.com/';

echo json_encode($eg_url), "<br>";

echo json_encode($eg_url, JSON_UNESCAPED_SLASHES), "<br>";
http:\/\/www.trillbit.com\/
http://www.trillbit.com/