请帮我解决这个explode()函数问题。第三种情况我得到了意想不到的结果,解释是什么?
编辑:值$ page_string实际上来自数据库。这次我使用var_dump而不是echo进行了测试。字符串,php如何计算它们? “15& page”如何计算11?
var_dump($page_string);//string(11) "15&page"
1。弹出&符号......很好。
$page_id_array = explode("&",$page_string);
$page_id = $page_id_array[0];
var_dump($page_id);
// string(2) "15"
2。弹出数字......很好
$page_id_array = explode("15",$page_string);
$page_id = $page_id_array[1];
var_dump($page_id);
//string(9) "&blog"
3。弹出'& page'......为什么?
$page_id_array = explode("&page",$page_string);
$page_id = $page_id_array[0];
var_dump($page_id);
//string(11) "15&page"
var_dump($page_id_array[1]);
//NULL
编辑:经过jasonbar的回答和评论,我做了测试,证实了他的回答:
$page_id_array = explode("&page",$page_string);
$page_id = $page_id_array[0];
var_dump($page_id);
//string(2) "15"
答案 0 :(得分:6)
我认为我的评论似乎是一个可能的解释。我使用“15& page”作为测试字符串试用了你的代码,它使用'& page'作为分隔符正确爆炸。
确保&实际上并没有编码为& amp;
您可以尝试print_r'ing您从explode()返回的数组,看看是否真的如此。如果是这样的话,当你在'&'上爆炸时,你会得到15,amp;页面。
答案 1 :(得分:1)
我使用PHP5运行以下内容。你能提供一个完整的脚本吗?你在运行什么版本的PHP?
$page_string = "15&page";
$page_id_array = explode("&",$page_string);
var_dump($page_id_array);
// array has 2 values, 15 and page
$page_id = $page_id_array[0];
echo '<br/>'.$page_id.'<br/>';
$page_id_array = explode("15",$page_string);
var_dump($page_id_array);
// array has 2 values, <empty> and &page
$page_id = $page_id_array[0];
echo '<br/>'.$page_id.'<br/>';
$page_id_array = explode("&page",$page_string);
var_dump($page_id_array);
// array has 2 values, 15 and <empty>
$page_id = $page_id_array[0];
echo '<br/>'.$page_id.'<br/>';
答案 2 :(得分:0)
最后一个场景也传给了我,你的字符串会引起异常现象。