0

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

私は何を間違っていますか?

4

3 に答える 3

1

stripos への呼び出しでは、実際のパラメーターの順序が逆になっています。http://us3.php.net/manual/en/function.stripos.phpを参照してください。引数の順序を逆にするだけで、そのエラーを修正する必要があります。

変化する:

if (false !== stripos($needle, $value)) {

if (false !== stripos($value, $needle)) {
于 2011-08-10T21:54:48.237 に答える
1

docsから、最初ではなく 2 番目に針を渡す必要があります。これを試して:

function array_find($needle, array $haystack)
{
    foreach ($haystack as $key => $value) {
        if (false !== stripos($value, $needle)) {
            return $key;
        }
    }
    return false;
    }
于 2011-08-10T21:54:51.290 に答える
0

メッセージは、striposという名前の変数ではなく、 の関数引数を参照しています$needle

int stripos ( string $haystack , string $needle [, int $offset = 0 ] )

それは実際に針について不平を言っています $value

于 2011-08-10T21:55:09.993 に答える