使用PHP卷曲的概念获取内部文本(Get the inner text using curl con

2019-08-01 00:06发布

这是网站的HTML文本,我要抢

1000个地方看到你死之前

<ul class="listings">
<li>
<a href="http://watchseries.eu/serie/1,000_places_to_see_before_you_die" title="1,000 Places To See Before You Die">
1,000 Places To See Before You Die
<span class="epnum">2009</span>
</a>
</li>

我用这样的代码

foreach($html->find('ul.listings li a') as $e)
echo $e->innertext. '<br/>';

我得到的输出是一样

 999: Whats Your Emergency<span class="epnum">2012</span> 

其中跨度请帮助我这个

Answer 1:

您可以使用strip_tags()

echo trim(strip_tags($e->innertext));

或者尝试使用preg_replace()以除去不需要的标记及其内容

echo preg_replace('/<span[^>]*>([\s\S]*?)<\/span[^>]*>/', '', $e->innertext);


Answer 2:

为什么不DOMDocument并获得title属性?:

$string = '<ul class="listings">
<li>
<a href="http://watchseries.eu/serie/1,000_places_to_see_before_you_die" title="1,000 Places To See Before You Die">
1,000 Places To See Before You Die
<span class="epnum">2009</span>
</a>
</li>';

$dom = new DOMDocument;
$dom->loadHTML($string);
$xpath = new DOMXPath($dom);
$text = $xpath->query('//ul[@class="listings"]/li/a/@title')->item(0)->nodeValue;
echo $text;

要么

$text = explode("\n", trim($xpath->query('//ul[@class="listings"]/li/a')->item(0)->nodeValue));
echo $text[0];

键盘示例



Answer 3:

有迹象表明,我能想到的解决这个2种方式。 一,是你抓住从锚标记上的title属性。 当然,不是每个人都建立了一个标题为属性的锚标记和属性的值可以是不同的,如果他们想填补它的方式。 另一种解决方案是,你得到innertext属性,然后用空值代替锚标记的每一个孩子。

所以,要么做到这一点

$e->title;

或这个

$text = $e->innertext;
foreach ($e->children() as $child)
{
    $text = str_replace($child, '', $text);
}

不过,这可能是使用一个好主意DOMDocument ,而不是这个。



Answer 4:

使用plaintext代替。

echo $e->plaintext;

但还是在今年将会出现,你可以使用正则表达式剪掉。

从文档例子在这里 :

$html = str_get_html("<div>foo <b>bar</b></div>");
$e = $html->find("div", 0);

echo $e->tag; // Returns: " div"
echo $e->outertext; // Returns: " <div>foo <b>bar</b></div>"
echo $e->innertext; // Returns: " foo <b>bar</b>"
echo $e->plaintext; // Returns: " foo bar"


Answer 5:

首先,检查你的HTML。 现在,它像

  $string = '<ul class="listings">
               <li>
                  <a href="http://watchseries.eu/serie/1,000_places_to_see_before_you_die" title="1,000 Places To See Before You Die">
 1,000 Places To See Before You Die
                    <span class="epnum">2009</span>
                 </a>
             </li>';

没有为UL没有结束标记,也许你错过了。

  $string = '<ul class="listings">
               <li>
                  <a href="http://watchseries.eu/serie/1,000_places_to_see_before_you_die" title="1,000 Places To See Before You Die">
 1,000 Places To See Before You Die
                    <span class="epnum">2009</span>
                 </a>
             </li>
            </ul>';

尝试这样的

 $xml = simplexml_load_string($string);
 echo $xml->li->a['title'];


文章来源: Get the inner text using curl concept in php