PHP explode()函数问题

时间:2010-02-24 04:07:11

标签: php

请帮我解决这个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"

3 个答案:

答案 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)

最后一个场景也传给了我,你的字符串会引起异常现象。