Php Regex从文本中获取所有href标记

Php Regex从文本中获取所有href标记,php,regex,Php,Regex,我有巨大的文本,其中包含普通文本和href标记。我想使用正则表达式检索所有href标记 我尝试了href=“([^”]*)”但它只返回一个href值 $result[] = $util->execute(self::$queryToGetContentFromPagesEng3); //getting text from database foreach ($result as $temp) { if(preg_match("href=\"([^\"]*)\"",$temp))

我有巨大的文本,其中包含普通文本和
href
标记。我想使用正则表达式检索所有href标记

我尝试了
href=“([^”]*)”
但它只返回一个
href

 $result[] = $util->execute(self::$queryToGetContentFromPagesEng3); //getting text from database
 foreach ($result as $temp) {
   if(preg_match("href=\"([^\"]*)\"",$temp)) {
     $storeUrl []=$temp;
   }
 }
我需要这样的结果:

  • href=/public/coursecontent/2017-08-03-12-bhnhlwdjzybellskiard.docx
  • href=/public/coursecontent/2016-07-07-rncsuatxhkbemysbmk.docx

  • 我的第一点是

    但是继续使用它,您可以尝试查找多个匹配项并将它们存储在一个数组中,而不是
    preg\u match
    ,然后在
    foreach
    中运行一个
    preg\u match\u all
    并将其存储在一个数组中,并将其存储到
    $storeUrul
    数组中


    然而,我相信一种更简单的方法,也更可靠的方法是解析HTML并从DOM开始工作。在您的例子中,这种方法可以简化为如下内容:

    $dom = new DOMDocument();
    $dom->loadHTML($result);
    $xpath = new DOMXPath($dom);
    $hrefs = $xpath->evaluate("a");
    
    for($i = 0; $i < $hrefs->length; $i++){
        $href = $hrefs->item($i);
        $url = $href->getAttribute('href');
        $storeUrl[] = $url;
    }
    
    $dom=newdomdocument();
    $dom->loadHTML($result);
    $xpath=newdomxpath($dom);
    $hrefs=$xpath->evaluate(“a”);
    对于($i=0;$i<$hrefs->length;$i++){
    $href=$hrefs->item($i);
    $url=$href->getAttribute('href');
    $storeUrl[]=$url;
    }
    
    由于标题是js regex

     const myString = '...'
     const regex = /href=".+?"/gi;
     const regex2 = /(?<=href=").+?(?=")/gi;
     //regex2 is without 'href' and "
     myString.match(regex);
    
    const myString='…'
    常量regex=/href=“.+?”/gi;
    
    const regex2=/(?可能与@showdev重复,感谢您的回复,我尝试了preg_match_all()但是它不是returnig all href标记。@Madhu你能展示一下它没有返回的href属性的例子吗?1

    2

    ,有两个href标记,我需要像我在上面的数字1和2中发布问题时提到的那样的结果。如果你使用正则表达式,请确保包含一个分隔符;使用
    preg\u match\u all
    。如何你可能需要考虑,尤其是关于使用<代码> DOMDOCT/<代码>的建议。在一个快速测试中,这不起作用。特别是在有不止一个链接的情况下,或者有额外的引号。谢谢你的回复。警官先生,但是它对我来说不起作用。警官先生,这次它正在返回O。只有一个href。你能给我一个测试字符串吗?我在用两个结果匹配'

    '。“>”>