2013-03-22 90 views
0

我想使用getElementsByTagName在我的HTML中查找所有脚本标签,然后使用src属性工作。在使用getElementsByTagName时在条件注释中包含标签

我用下面的代码可以正常工作,但它忽略了条件注释中的标记。

foreach ($dom->getElementsByTagName('script') as $node) 
{ 
    if ($node->hasAttribute('src')) 
    { 
     echo $node->getAttribute('src'); 
    } 
} 

条件注释标签的例子越来越忽略:

<!--[if lt IE 9]> 
<script src="js/html5shiv.js"></script> 
<![endif]--> 

有没有办法在搜索中包括这个呢?我发现下面的线程,但是建议循环遍历所有子元素并不完全理想。他们是否有其他解决方案?

PHP DomDocument alter conditional comments

感谢everso!

+0

您能否详细说明,“忽略条件注释中的标签”? – ficuscr 2013-03-22 15:50:10

+0

我编辑了这个问题来包含一个例子。 – chapmanio 2013-03-22 16:10:39

回答

0

评论是一条评论,所以不是在DOM中生成script元素。没有元素==没有选择。

如果您不喜欢来自其他线程的解决方案,那么您可以在创建DOM对象之前尝试使用正则表达式剪切注释。但如果这是更可靠的是被怀疑...遇到f.e.任何稍微格式错误的HTML,并且可能会比您预期的更多(或更少)。

+0

好吧,以为那是在说什么...可以OP不写条件,以便在任何一种情况下附加'src',而是使用条件来设置一个实际值或null?或者因为'src'意味着某些东西使用第二个用户定义的属性? – ficuscr 2013-03-22 16:04:45

+0

我已经更新了我的问题,以包含我的意思。就我而言,我正在谈论有条件的评论。我以前使用过正则表达式,但是在此之前总是建议使用DOMDocument。 – chapmanio 2013-03-22 16:12:58

+0

我明白了你的意思 - 但正如我所说的那样,当代码通过普通DOM解析器转换成DOM时,__没有脚本元素___。评论意见是一条评论 - 而MicroSoft是世界上唯一(不知道)认为的人。 – CBroe 2013-03-22 16:14:51