preg_match_all用于获取HTML中的链接,样式和脚本标记

时间:2013-10-15 15:12:01

标签: preg-match-all

请帮我解决这个问题。

我的代码是:

    preg_match_all('/<(link|style|script)(.*?)(\/>|<\/style>|<\/script>)/i', $tpl_content, $styles);

如果链接标记以“&gt;”结尾,则无效(仅当链接标记以'/&gt;'结尾时才有效。

谢谢!

1 个答案:

答案 0 :(得分:0)

不确定你是否也想要标签之间的所有东西,它在一个未被捕获的组中:

/(<(?:link|style|script)(?:.*?)(?:\/)?>)(?:(?<=^|>)[^><]+?(?=<|$))(<\/(?:style|script)>)?/i

我会在这个btw中使用PREG_SET_ORDER标志。 foreach行,[0]是完全匹配,[1]是start / all,[2]是可选的结束标记

$string = '<link lan="hello"/><script language=\'javascript\'>$(document).ready(function() {}</script>'
$returnValue = preg_match_all('/(<(?:link|style|script)(?:.*?)(?:\\/)?>)(?:(?<=^|>)[^><]+?(?=<|$))(<\\/(?:style|script)>)?/i', $string , $matches, PREG_SET_ORDER);