繁体   English   中英

正则表达式从文本中获取所有href标签

[英]Regex to get all href tags from text

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

我尝试了href="([^"]*)"但它仅返回一个href值。

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

我需要这样的结果:

  1. href=/public/coursecontent/2017-08-03-12-bhnhlwdjzyblelskiard.docx
  2. href=/public/coursecontent/2016-07-07-07-rncsuatxhkkbeomysbmk.docx

我的第一点是, 在这种情况下正则表达式很可能不是您要采用的路径

但是继续进行下去,您可以尝试使用preg_match_all而不是preg_match来查找多个匹配项并将它们存储在数组中,然后从您的foreach中运行一个preg_match_all并将其存储在数组中,并将array_merge合并到$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;
}

由于标题是js正则表达式...

 const myString = '...'
 const regex = /href=".+?"/gi;
 const regex2 = /(?<=href=").+?(?=")/gi;
 //regex2 is without 'href' and "
 myString.match(regex);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM