Php 正则表达式-查找匹配中的匹配项

Php 正则表达式-查找匹配中的匹配项,php,regex,html-parsing,Php,Regex,Html Parsing,如果字符串是 <li>Your browser may be missing a required plug-in contained in <a href="http://get.adobe.com/reader/">Adobe Acrobat Reader</a>. Please reload this page after installing the missing component.<br />If this error persis

如果字符串是

<li>Your browser may be missing a required plug-in contained in <a href="http://get.adobe.com/reader/">Adobe Acrobat Reader</a>.  Please reload this page after installing the missing component.<br />If this error persists, you can also save a copy of <a href="test.pdf">
这将导致捕获第一个“href”并以“.pdf”结尾。我需要它从第二个href开始。换句话说,它应该只捕获以.pdf结尾的href


我应该如何使用正则表达式进行此操作?

您可以尝试此正则表达式:

/href=[^>]+\.pdf/

大多数时候,当你可以避免
*
+
(或它们的懒惰版本)时,最好是:)


另外,不要忘记转义句点。

您可以尝试以下正则表达式:

/href=[^>]+\.pdf/

大多数时候,当你可以避免
*
+
(或它们的懒惰版本)时,最好是:)


另外,不要忘记转义句点。

为了解析HTML或XML,应该使用DOM而不是正则表达式。在PHP中,有
DOMDocument
类用于:

$doc = new DOMDocument();
$doc->loadHTML('<li>Your browser may be missing a required plug-in contained in <a href="http://get.adobe.com/reader/">Adobe Acrobat Reader</a>.  Please reload this page after installing the missing component.<br />If this error persists, you can also save a copy of <a href="http://www.police.vt.edu/VTPD_v2.1/crime_stats/crime_logs/data/VT_2011-01_Crime_Log.pdf">');

$links = $doc->getElementsByTagName('a');
foreach($links as $link) {
    echo $link->getAttribute('href');
}
$doc=newDOMDocument();
$doc->loadHTML(“
  • 您的浏览器可能缺少中包含的必需插件。请在安装缺少的组件后重新加载此页面。
    如果此错误仍然存在,您还可以保存其副本”); $links=$doc->getElementsByTagName('a'); foreach($links作为$link){ echo$link->getAttribute('href'); }
  • 您应该使用DOM而不是正则表达式来解析HTML或XML。在PHP中,有
    DOMDocument
    类用于:

    $doc = new DOMDocument();
    $doc->loadHTML('<li>Your browser may be missing a required plug-in contained in <a href="http://get.adobe.com/reader/">Adobe Acrobat Reader</a>.  Please reload this page after installing the missing component.<br />If this error persists, you can also save a copy of <a href="http://www.police.vt.edu/VTPD_v2.1/crime_stats/crime_logs/data/VT_2011-01_Crime_Log.pdf">');
    
    $links = $doc->getElementsByTagName('a');
    foreach($links as $link) {
        echo $link->getAttribute('href');
    }
    
    $doc=newDOMDocument();
    $doc->loadHTML(“
  • 您的浏览器可能缺少中包含的必需插件。请在安装缺少的组件后重新加载此页面。
    如果此错误仍然存在,您还可以保存其副本”); $links=$doc->getElementsByTagName('a'); foreach($links作为$link){ echo$link->getAttribute('href'); }
  • 不要使用正则表达式解析HTML。使用适当的HTML解析模块。您无法用正则表达式可靠地解析HTML,在这条路上您将面临悲伤和挫折。一旦HTML改变了您的预期,您的代码就会被破坏。有关如何使用已编写、测试和调试的PHP模块正确解析HTML的示例,请参阅或。不要使用正则表达式解析HTML。使用适当的HTML解析模块。您无法用正则表达式可靠地解析HTML,在这条路上您将面临悲伤和挫折。一旦HTML改变了您的预期,您的代码就会被破坏。有关如何使用已经编写、测试和调试的PHP模块正确解析HTML的示例,请参阅或。问题是,有时我需要从Javascript获取链接。(即document.location.href…)javascript在浏览器中也有dom方法,这更简单:只需依赖
    document.links
    。问题是有时我需要从javascript获取链接。(即document.location.href…)javascript在浏览器中也有dom方法,这更简单:只需依赖
    document.links