0
4

2 回答 2

1

我强烈建议您使用DomDocument

这段代码应该可以解决问题...

<?php

/**
* @author Jay Gilford
* @edited KHMKShore:stackoverflow
*/

/**
* get_links()
* 
* @param string $url
* @return array
*/
function get_links($url) {

  // Create a new DOM Document to hold our webpage structure
  $xml = new DOMDocument();

  // Load the url's contents into the DOM (the @ supresses any errors from invalid XML)
  @$xml->loadHTMLFile($url);

  // Empty array to hold all links to return
  $links = array();

  //Loop through each <a> and </a> tag in the dom
  foreach($xml->getElementsByTagName('a') as $link) {
    //if it has a strong tag in it, save the href link.
    if (count($link->getElementsByTagName('strong')) > 0) {
        $links[] = array('url' => $link->getAttribute('href'), 'text' => $link->nodeValue);
    }
  }

  //Return the links
  return $links;
}
于 2013-09-26T22:10:36.007 回答
0

首先,您的正则表达式很容易失败

<a alt="cow > moo" href="cow.php"><strong>moo</strong></a>

其次,您的正则表达式略有下降,以下将起作用:

~(<a href="(.*)"><strong>\w+</strong></a>)~

第三,也是最重要的,如果你想保证提取你想要的东西而不会失败,就像@KHMKShore 指出的那样,DOMDocument 是最好的路径。

于 2013-09-26T22:56:25.960 回答