我正在尝试使用SimpleHTMLDom进行刮擦,并且似乎遇到了问题。
我的代码如下:
$table = $html->find('table',0);
$theData = array();
foreach(($table->find('tr')) as $row) {
$rowData = array();
foreach($row->find('td') as $cell) {
$rowData[] = $cell->innertext;
}
$theData[] = $rowData;
}
function array_find($needle, array $haystack)
{
foreach ($haystack as $key => $value) {
if (false !== stripos($needle, $value)) {
return $key;
}
}
return false;
}
$searchString = "hospitalist";
$position = array_find($searchString, $theData);
echo ($position);
产生以下错误:
Warning: stripos() [function.stripos]: needle is not a string or an integer in C:\xampp\htdocs\main.php on line 85
我做错了什么?
答案 0 :(得分:1)
您在调用stripos时已经反转了实际参数的顺序。见http://us3.php.net/manual/en/function.stripos.php。只需颠倒参数的顺序,就应该修复错误。
变化:
if (false !== stripos($needle, $value)) {
到
if (false !== stripos($value, $needle)) {
答案 1 :(得分:1)
从the docs开始,你应该在针头上传递第二个,而不是第一个。试试这个:
function array_find($needle, array $haystack)
{
foreach ($haystack as $key => $value) {
if (false !== stripos($value, $needle)) {
return $key;
}
}
return false;
}
答案 2 :(得分:0)
消息是指stripos
的函数参数,而不是名为$needle
的变量。
int stripos ( string $haystack , string $needle [, int $offset = 0 ] )
实际上是抱怨针 $value