我發現了幾個與我的問題有關的不同問題,但我無法將它們組合到一個函數中。使用PHP檢索head標籤內的多個腳本標籤的屬性和內容
這裏是我的HTML:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>microscope</title>
<script language="javascript">AC_FL_RunContent = 0;</script>
<script src="Scripts/AC_RunActiveContent.js" language="javascript"></script>
</head>
下面是代碼我現在所擁有的:
$filePath = "directory/file.html";
retrieveScriptContentandAttributes($filePath);
function retrieveScriptContentandAttributes($filePath) {
$dom = new DOMDocument;
@$dom->loadHTMLFile($filePath);
//var_dump($dom->loadHTMLFile($filePath));
$head = $dom->getElementsByTagName('head')->item(0);
$xp = new DOMXpath($dom);
$script = $xp->query("script", $head);
for ($row = 0; $row < 5; $row++) {
echo $script->item($row)->textContent;
if ($script->item($row) instanceof DOMNode) {
if ($script->item($row)->hasAttributes()) {
foreach ($script->item($row)->attributes as $attr) {
$name = $attr->nodeName;
$value = $attr->nodeValue;
$scriptAttr[] = array('attr'=>$name, 'value'=>$value);
}
echo $scriptAttr;
}
}
}
而且我得到的結果是「ArrayAC_FL_RunContent = 0;數組聲明:試圖獲取非對象的屬性「在行上」echo $ script-> item($ row) - > textContent;「。奇怪的是,該行執行得很好。但我需要一種方法來獲得$ scriptAttr來打印數組,如下所示:language => javascript。然後再次爲下一個腳本標記:src => Scripts/AC_RunActiveContent.js,language => javascript。
我很感謝您的幫助!
所以你只是想要在數組中的每個腳本標記的所有屬性? – Yoshi 2011-05-18 15:21:01
如果var_dump'$ script-> item($ row)'會發生什麼? – 2011-05-18 15:22:15
是的,我想要所有的屬性和屬性的內容。 – EllaJo 2011-05-18 15:46:13