[英]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;
}
}
我需要这样的结果:
href=/public/coursecontent/2017-08-03-12-bhnhlwdjzyblelskiard.docx
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.