2010-02-24 103 views
2

請幫我看看這個explode()函數的問題。第三種情況我得到意想不到的結果,解釋是什麼?PHP explode()函數問題

編輯:值$ page_string實際上來自數據庫。這次我使用var_dump而不是echo來做測試。字符串,PHP如何計算它們? 「15 &」頁面如何計入11?

var_dump($page_string);//string(11) "15&page" 

[彈出符號...罰款。

$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" 

彈出 '&頁' ......爲什麼?

 $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

被編碼爲HTML實體&? – jasonbar 2010-02-24 04:11:19

+0

這些結果根本不正確。唯一正確的是#1。請運行您自己的代碼。使用var_dump()。查看html源輸出。 – goat 2010-02-24 04:27:32

+0

我打算髮布較長的版本。問題可能不在代碼的這一部分。 – erastusnjuki 2010-02-24 04:39:33

回答

6

我覺得我的評論似乎是一個可能的解釋。我使用「15 &頁面」作爲測試字符串嘗試了您的代碼,並使用'&頁面'作爲分隔符正確爆炸。

確保&實際上沒有編碼爲&放大器;

你可以嘗試print_r'ing你從爆炸回陣列(),看看如果那是真的如此。如果是這樣,那麼當爆炸時只有'&'時,最終會有15個放大器頁面。

+0

@erastusnjuki:你的問題更新似乎證實了這個理論。它看起來像你的字符串的符號編碼爲一個html實體。 – jasonbar 2010-02-24 05:19:52

+0

謝謝。讓我檢查一下。 – erastusnjuki 2010-02-24 05:23:33

+0

謝謝。完全解釋。 +1 – erastusnjuki 2010-02-24 05:36:11

0

最後的方案還通過了對我來說,還有一些關於你的字符串,是造成異常。

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/>';