如何用PHP从html中获取URL值

如何用PHP从html中获取URL值,php,regex,Php,Regex,我发现我的家庭作业有一个问题,那就是如何使用php从html中获取URL值。我尝试了一个网站来尝试我的代码,但我需要得到一些模式的URL(具体结果) 示例:https://video.xxxxxxx/ 我的代码: $regexp = "/<a\s[^>]*href=([\"\']??)([^\\1 >]*?)\\1[^>]*>(.*)<\/a>/siU"; if(preg_match_all("$regexp", $data, $matches, P

我发现我的家庭作业有一个问题,那就是如何使用php从html中获取URL值。我尝试了一个网站来尝试我的代码,但我需要得到一些模式的URL(具体结果) 示例:https://video.xxxxxxx/

我的代码:

$regexp = "/<a\s[^>]*href=([\"\']??)([^\\1 >]*?)\\1[^>]*>(.*)<\/a>/siU";
  if(preg_match_all("$regexp", $data, $matches, PREG_SET_ORDER)) {
    foreach($matches as $match) {
      echo $match[0];
    }
  }
$regexp=“/]*href=([\”\']??)([^\\1>]*?)\\1[^>]*>(.*)/siU”;
if(preg_match_all($regexp“,$data,$matches,preg_SET_ORDER)){
foreach($matches作为$match进行匹配){
echo$match[0];
}
}
您可以尝试以下方法:

<a.*?href\s*=\s*([\"\'])(.*?)\1.*?>.*?<\/a>

我以前从未使用过PHP,因此您可能必须使用
\\1
而不是
\1

说明: 解释其中的每一个元素都很繁琐,因此我将给您一个大致的想法。首先,您匹配
a
标记,后跟任意数量的字符、样式或不同的属性,然后是
href=
。在这里,我们开始捕获组1,其中包含您的
'
”。捕获组2包含您网站的url,但不包含报价。然后,我们使用
\1
来引用首次使用的报价类型

如果出于任何原因,希望将文本放在
a
标记中,可以使用
\3


请注意:您需要使用
match[2]
而不是
match[0]

请说得更具体一些,因为它是目前写的,您的帖子可能永远不会有任何答案。请在问题中包括一些示例输入和它们所需的输出。@Pierre我在几分钟内编辑了我的答案多次,所以请参考它的最新版本,就是现在的版本。