使用PHP preg_match_all,获取href的值

时间:2011-01-03 18:51:28

标签: php regex preg-match-all

即使在我阅读本教程http://www.webcheatsheet.com/php/regular_expressions.php

之后,我也不太了解正则表达式的工作原理

以下是我需要找到的内容:

<link type="text/html" rel="alternate" href="http://link"/>

它应该返回:

http://link

以下是我的尝试:

$find = preg_match_all(
    '/<link type="text/html" rel="alternate" href=".*',
    $file,
    $patterns2
);

你可以笑:)

提前感谢您的帮助和时间:)

3 个答案:

答案 0 :(得分:3)

使用正则表达式解析(X)HTML为almost certainly wrong。使用专用的XML解析器。有很多可用于PHP。

答案 1 :(得分:3)

使用simplexml

$html = '<link type="text/html" rel="alternate" href="http://link"/>';
$xml  = simplexml_load_string($html);
$attr = $xml->attributes();

使用dom

$dom = new DOMDocument;
$dom->loadHTML($html);
$nodes = $dom->getElementsByTagName('link');
$attr  = $nodes->item(0)->getAttribute('href');

答案 2 :(得分:2)

您必须在括号中填写所需的文本块,例如(.*),这将是要返回的内容

这个适合我

<?php
preg_match_all('/<link type="text\/html" rel="alternate" href="(.*)"\/>/','<link type="text/html" rel="alternate" href="http://link"/>',$patterns2);
print_r($patterns2);
?>