刮取插件的正确语法

时间:2017-06-14 01:35:59

标签: php

我正在使用这个优秀的插件来抓取特定网站的一些内容:http://simplehtmldom.sourceforge.net/manual.htm

我正试图解决的一个例子。

    <section class="details">

        <div class="address">  
          <div class="zip-code-country">
              <span>USA</span>
          </div>
        </div>
          <div class="phone">
            <a href="tel:+1234567890">(123)456-7890</a>
          </div>
          <ul>
              <li><a href="mailto:test@example.com">Email</a></li>
          </ul>
      </section>

我的代码的相关部分是这样的:

foreach($html->find('section.details') as $part2) {

    $item2['zip']     = $part2->find('div.zip-code-country span', 0)->plaintext; //works perfectly
    $item2['phone']     = $part2->find('div.phone a', 0)->plaintext; //works perfectly
    $item2['email']     = $part2->find('ul li a[href]', 0)->plaintext; //issue is here
    $pieces2[] = $item2;
}

当我尝试获取email时,它会返回锚文本(即“电子邮件”)。我想要的是返回“test@example.com”。

关于如何使这种语法正确的想法?

1 个答案:

答案 0 :(得分:1)

你想要这样做:

$email= $part2->find('ul li a[href]', 0)->href;
$item2['email'] =str_replace('mailto:', '', $email);