2013-07-01 43 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'未找到。 当返回空字符串,这意味着返回数组的最后一个元素是空的字符串