Maison  >  Questions et réponses  >  le corps du texte

Erreur fatale : erreur non détectée : appel de la fonction membre find() sur bool dans la trace de la pile C : #0 {main} lancé en C à la ligne 16

Je reçois cette erreur ci-dessus et mon code est ci-dessous. Y a-t-il un problème avec mon code ? Toute aide est appréciée. Je ne sais pas si cela a à voir avec le logiciel que j'utilise pour l'exécuter, XAMPP Apache. J'essaie actuellement de récupérer des informations à partir d'une page Web contenant des codes de produits dans Excel. J'ai réussi à exécuter environ 900+ codes de production, mais tout à coup j'ai eu l'erreur ci-dessus.

<?php
// example of how to use basic selector to retrieve HTML contents
include('simple_html_dom.php');

$file = fopen("Book1.csv","r");
$file2 = fopen("test.csv","w");
$links = [];

while (($result = fgetcsv($file)) !== false)
{
    $link = "https://mall/Product/".$result[0];
    $links[] = $link;

    $row_data = [];
    $page = file_get_html($link);
    $product_details = $page->find('.ProductDetailsTable tr'); //line 16
    if(count($product_details)==0) {
        $row_data[] = $result[0];
        $row_data[] = 'not found'; 
        fputcsv($file2, $row_data);
        continue;
    }

    //second method
    $article_number = '';
    $product_description = '';
    $product_family = '';
    $product_lifecycle = '';
    $plm_date = '';
    $notes = '';
    $EAN = '';
    $UPC = '';
    $country_of_origin = '';

    foreach($product_details as $table_row) {    
        if(count($table_row->find('td'))==1){
            //ignore
        } elseif(count($table_row->find('td'))==2) {
            $key = $table_row->find('td')[0]->plaintext;
            $value = $table_row->find('td')[1]->plaintext;
            if($key=="EAN") {
                $EAN = $value;
            }
            elseif($key=='Article Number (Market Facing Number)') {
                $article_number = $value;
            } elseif ($key=='Product Description') {
                $product_description = $value;
            } elseif ($key=='Product family') {
                $product_family = $value;
            }elseif ($key=='Product Lifecycle (PLM)') {
                $product_lifecycle = $value;
            }elseif ($key=='PLM Effective Date') {
                $plm_date = $value;
            }elseif ($key=='Notes') {
                $notes = $value;
            }elseif ($key=='UPC') {
                $UPC = $value;
            }elseif ($key=='Country of origin') {
                $country_of_origin = $value;
            }    
        } 
    }
    $row_data[] = trim($article_number);
    $row_data[] = trim($product_description);
    $row_data[] = trim($product_family);
    $row_data[] = trim($product_lifecycle);
    $row_data[] = trim($plm_date);
    $row_data[] = trim($notes);
    $row_data[] = trim($EAN);
    $row_data[] = trim($UPC);
    $row_data[] = trim($country_of_origin);
    fputcsv($file2, $row_data);
}

fclose($file);
fclose($file2);
echo 'done';

?>

P粉878510551P粉878510551319 Il y a quelques jours417

répondre à tous(1)je répondrai

  • P粉237647645

    P粉2376476452023-12-29 23:12:44

    Cela se produit file_get_html() 返回一个布尔值(可能是 false en raison d'une erreur telle qu'une URL invalide).

    Votre code ne présente aucun échec de vérification.

    Je vous suggère d'ajouter ce qui suit :

    if (!$page) {
      // Do some error handling, logging
      continue; // skip to next iteration on your loop.
    }

    répondre
    0
  • Annulerrépondre