PHP函数substr未按预期工作
我正在使用PHP处理巨大的字符串来提取有用的数据。一切都很顺利,直到我遇到了这个意想不到的结果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
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&amp
我不明白输出中最后一个安培是从哪里来的。有什么建议吗?但我无法复制,在这种情况下,我会使用
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。