我需要在html中查找未注释的所有<link />
标记。
例如,在html中:
<link rel="stylesheet" href="xyz/dzgt/style.css" />
<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="xyz/dzgt/ie7.css" />
<![endif]-->
我需要匹配<link rel="stylesheet" href="xyz/dzgt/style.css"/>
但不匹配<link rel="stylesheet" type="text/css" href="xyz/dzgt/ie7.css" />
的正则表达式,因为它被<!-- -->
包围。
我可以使用以下正则表达式<link />
找到所有/<link.*href="(.*\.css)".*\/>/m
个标签,但它也会与已评论的标签相匹配,但我只需要对这些标签进行评论。
提前感谢您的帮助!
答案 0 :(得分:4)
您应该使用DOMDocument
Class而不是regex来解析HTML。查看this.
<?php
$html='<link rel="stylesheet" href="xyz/dzgt/style.css" />
<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="xyz/dzgt/ie7.css" />
<![endif]-->';
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('link') as $tag) {
echo $tag->getAttribute('href');
}
<强> OUTPUT :
强>
xyz/dzgt/style.css