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