Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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函数substr未按预期工作_Php - Fatal编程技术网

PHP函数substr未按预期工作

PHP函数substr未按预期工作,php,Php,我正在使用PHP处理巨大的字符串来提取有用的数据。一切都很顺利,直到我遇到了这个意想不到的结果 echo substr("https%3A%2F%2Fwww.instagram.com%2Fapexcalit%2F&redir_token=cQ3kBke8cJRkD9SHj2PKKqMFR598MTUzMTk0NDQ5MkAxNTMxODU4MDky&event=channel_description;",0,50); 我得到的输出是 https%3A%2F%2

我正在使用PHP处理巨大的字符串来提取有用的数据。一切都很顺利,直到我遇到了这个意想不到的结果

echo substr("https%3A%2F%2Fwww.instagram.com%2Fapexcalit%2F&redir_token=cQ3kBke8cJRkD9SHj2PKKqMFR598MTUzMTk0NDQ5MkAxNTMxODU4MDky&event=channel_description;",0,50);
我得到的输出是

https%3A%2F%2Fwww.instagram.com%2Fapexcalit%2F&ampamp

我不明白输出中最后一个安培是从哪里来的。有什么建议吗?

但我无法复制,在这种情况下,我会使用
html\u entity\u decode
而不是
substr
html\u entity\u decode
通过将所有html实体转换为其适用的字符来给出实际结果

$tst = html_entity_decode("https%3A%2F%2Fwww.instagram.com%2Fapexcalit%2F&redir_token=cQ3kBke8cJRkD9SHj2PKKqMFR598MTUzMTk0NDQ5MkAxNTMxODU4MDky&event=channel_description;");
echo substr ($tst, 0, 50);
检查这里

在这里阅读更多
&
是HTML实体,请尝试在输入字符串中使用函数
htmlspecialchars\u decode()

像这样:

$str = "https%3A%2F%2Fwww.instagram.com%2Fapexcalit%2F&redir_token=cQ3kBke8cJRkD9SHj2PKKqMFR598MTUzMTk0NDQ5MkAxNTMxODU4MDky&event=channel_description;";
$str = htmlspecialchars_decode($str);
echo substr($str, 0, 47);
// Output: https%3A%2F%2Fwww.instagram.com%2Fapexcalit%2F&

对我来说没有。可能是您的输出方式重新编码了符号。Substr工作正常,似乎代码的其他部分有问题,显示您的代码…最后一个
amp
来自输入字符串。额外的
amp
是第一个,它的来源是字符串中存在的
&
,可能被一些代码编码为HTML。