2013-07-01 98 views
0

這就是我想做的事:PHP的爆炸未正常工作與字符串作爲分隔符

  • 從中
  • 使用得到一個HTML頁面,並帶HTML標籤的身體部位爆炸返回給定的字符串

    $html = file_get_contents($url); 
    $html = mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8"); 
    $dom = new DOMDocument; 
    $dom->loadHTML($html); 
    $xpath = new DOMXPath($dom); 
    $query = $xpath->query("/html/body"); 
    $body = $dom->saveXML($query->item(0)); 
    $body = strip_tags($body); 
    echo end(explode('Item description', $body)); 
    

,因爲我希望最後一行不起作用下面的文字。如果我用一個空格作爲分隔符的字符串,它不起作用(只返回所有內容)。當我使用一個沒有空格的單詞時,例如「描述」,它的工作原理。我需要做些什麼來使它與短語一起工作?我有與strpos相同的問題 - 如果$ needle有一個空格,它不會給出正確的結果。

UPDATE:

HTML源代碼,曾在explode的2個字,我用作爲分隔符之間的 Item description

我想這樣做str_replace(" ", ' ', $body);,但沒有做任何事情。 但是,當我做了str_replace(" ", ' ', $html);到HTML之前,它是由$dom->saveXML處理,解決了這個問題。

This blog post讓我覺得$dom->saveXML很可能會改變html;

+1

你試過用preg_split()嗎? – mohkhan

+2

也許這個空間實際上不是一個空間,試着用'#Item \ s + description#'作爲模式的preg_split()。 – silkfire

+0

您是否嘗試過使用雙引號:echo end(explode(「Item description」,$ body)); – khushalbokadey

回答

0

當您的代碼echo end(explode('Item description', $body));返回所有或所有$body作爲字符串,意味着'Item description'未找到。 當返回空字符串,這意味着返回數組的最後一個元素是空的字符串