如何忽略跨度标签dom HTML

时间:2019-05-01 20:07:03

标签: php dom

嗨,我正在尝试在这段代码中抓取Brand New Apple iPhone 8 64GB or 256GB - Sealed - GSM Unlocked,但它也抓取了span值,我该如何忽略span文本。

<h1 class="it-ttl" itemprop="name" id="itemTitle"><span class="g-hdn">Details about  &nbsp;</span>Brand New Apple iPhone 8 64GB or 256GB - Sealed - GSM Unlocked</h1>

这是代码:

$productname = $html->find("h1[class='it-ttl']",0)->plaintext;

echo $productname;

1 个答案:

答案 0 :(得分:-1)

strip_tags_content是一个用PHP Strip Tags编写的函数,并且用这些词来解释该函数的所有者。您可以在链接中找到更多示例。

输出为:全新的Apple iPhone 8 64GB或256GB-密封-GSM解锁

“嗨。我创建了一个函数,用于删除HTML标记及其内容“

 function strip_tags_content($text, $tags = '', $invert = FALSE) {

        preg_match_all('/<(.+?)[\s]*\/?[\s]*>/si', trim($tags), $tags);
        $tags = array_unique($tags[1]);

        if(is_array($tags) AND count($tags) > 0) {
            if($invert == FALSE) {
                return preg_replace('@<(?!(?:'. implode('|', $tags) .')\b)(\w+)\b.*?>.*?</\1>@si', '', $text);
            }
            else {
                return preg_replace('@<('. implode('|', $tags) .')\b.*?>.*?</\1>@si', '', $text);
            }
        }
        elseif($invert == FALSE) {
            return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text);
        }
        return $text;
    }


    $string = '<h1 class="it-ttl" itemprop="name" id="itemTitle"><span class="g-hdn">Details about  &nbsp;</span>Brand New Apple iPhone 8 64GB or 256GB - Sealed - GSM Unlocked</h1>';
    $string = strip_tags_content($string,'<span>',true);
    $string = strip_tags($string);

    echo $string;

对于定义此函数后遇到的问题,只需调用

$productname = $html->find("h1[class='it-ttl']",0)->plaintext; 
$productname = strip_tags_content($productname ,'<span>',true); 
$productname = strip_tags($string);