正则表达式 - 从标签中获取href值

时间:2016-12-04 07:45:34

标签: php html regex

我想从href获得价值。

以下是我正在使用的HTML:

<div class="streeet"> 
  <b>Name:</b>wwww<br />
  <b>Post Code:</b>97
  <b>City:</b>
  <a href="/bar-fan-pers.html" title="abcd">VALUE</a> 
  <br />
</div>

我正在尝试使用preg_match_all

preg_match_all('/<div\s*class=\"walldetsleft\">[^>]*<a\s*href=\"[^>]*\"\s[^\>]*>(.*?)<\/a>/', $url, $val);

它不起作用 - 输出只是一个空数组。我怎么写一个正则表达式来做这个?

2 个答案:

答案 0 :(得分:0)

这不是你要求的正则表达式,但它是我推荐的:

$html = '
<div class="streeet"> 
  <b>Name:</b>wwww<br />
  <b>Post Code:</b>97
  <b>City:</b>
  <a href="/bar-fan-pers.html" title="abcd">VALUE</a> 
  <br />
</div>';

// handle parsing errors yourself
libxml_use_internal_errors(true);
// instantiate new `DOMDocument` object
$dom = new DOMDocument();
// load $html into `DOMDocument`
$dom->loadHTML($html);
// get all anchor elements
$elements = $dom->getElementsByTagName('a');
// iterate over anchors
foreach($elements as $element) {
    // get href attribute
    $href = $element->getAttribute('href');
    echo $href . PHP_EOL;
}

答案 1 :(得分:0)

您可以执行以下操作:

$doc = new DOMDocument;
 $source = '<div class="streeet"> 
  <b>Name:</b>wwww<br />
  <b>Post Code:</b>97
  <b>City:</b>
  <a href="/bar-fan-pers.html" title="abcd">VALUE</a> 
  <br />
</div>';
 $doc->loadHTML($source);     
 $out = $doc->getElementsByTagName('a')->item(0)->attributes->getNamedItem('href')->nodeValue;
echo $out;