2013-03-22 89 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