所以我花了很多时间编写一个执行某项任务的脚本,当我在本地计算机上测试它时工作正常,但是当我将它上传到我的主机时它会给我这个错误
Fatal error: Cannot use object of type DOMNodeList as array
这是脚本执行的示例
$xml = new DOMDocument();
$xml->loadHTML($html);
$xpath = new DOMXPath($xml);
$table =$xpath->query("//*[@style='background: #aaaaaa']")->item(0);
$rows = $table->getElementsByTagName("tr");
foreach ($rows as $row) {
if($row->getAttribute('align') === 'center') {
$cells = $row -> getElementsByTagName('td');
// I GET THE ERROR FROM THIS LINE
$add = mysql_escape_string(utf8_decode($cells[0]->nodeValue));
Some logic
}
就像我说它在我的本地机器上工作正常,并且当我在我的主机上运行时出现错误
我使用此代码来获取加载的扩展名,因为我认为问题可能来自那里
print_r(get_loaded_extensions());
这是我机器的结果
Array
(
[0] => Core
[1] => bcmath
[2] => calendar
[3] => ctype
[4] => date
[5] => ereg
[6] => filter
[7] => ftp
[8] => hash
[9] => iconv
[10] => json
[11] => mcrypt
[12] => SPL
[13] => odbc
[14] => pcre
[15] => Reflection
[16] => session
[17] => standard
[18] => mysqlnd
[19] => tokenizer
[20] => zip
[21] => zlib
[22] => libxml
[23] => dom
[24] => PDO
[25] => bz2
[26] => SimpleXML
[27] => wddx
[28] => xml
[29] => xmlreader
[30] => xmlwriter
[31] => apache2handler
[32] => openssl
[33] => curl
[34] => mbstring
[35] => exif
[36] => gd
[37] => gettext
[38] => intl
[39] => mysql
[40] => mysqli
[41] => Phar
[42] => pdo_mysql
[43] => pdo_sqlite
[44] => soap
[45] => sockets
[46] => sqlite3
[47] => xmlrpc
[48] => xsl
[49] => mhash
)
并从我的托管
Array
(
[0] => Core
[1] => date
[2] => ereg
[3] => libxml
[4] => openssl
[5] => pcre
[6] => sqlite3
[7] => zlib
[8] => bcmath
[9] => bz2
[10] => calendar
[11] => ctype
[12] => curl
[13] => dom
[14] => hash
[15] => fileinfo
[16] => filter
[17] => ftp
[18] => gd
[19] => gettext
[20] => SPL
[21] => iconv
[22] => session
[23] => intl
[24] => json
[25] => mbstring
[26] => mcrypt
[27] => standard
[28] => mysql
[29] => mysqli
[30] => pgsql
[31] => mysqlnd
[32] => Phar
[33] => posix
[34] => pspell
[35] => Reflection
[36] => imap
[37] => SimpleXML
[38] => soap
[39] => sockets
[40] => exif
[41] => tidy
[42] => tokenizer
[43] => xml
[44] => xmlreader
[45] => xmlrpc
[46] => xmlwriter
[47] => xsl
[48] => zip
[49] => cgi-fcgi
[50] => PDO
[51] => pdo_sqlite
[52] => pdo_mysql
[53] => ionCube Loader
[54] => Zend Guard Loader
)
我不知道为什么会收到错误
答案 0 :(得分:24)
getElementsByTagName()
会返回DOMNodeList
,其中会ArrayAccess
as of PHP 5.6.3。这使您可以通过$cells[0]
访问节点。
在以前的版本中,您需要使用DOMNodeList的item()
方法来访问特定索引,例如: $cells->item(0)
。
答案 1 :(得分:-4)
请阅读文档:
http://php.net/manual/en/domdocument.getelementsbytagname.php
此函数返回包含类DOMNodeList的新实例 所有具有给定本地标记名称的元素。
它是一个对象,而不是一个数组,这意味着你不能使用$ cells [0]。