繁体   English   中英

如何遍历php错误并继续while循环?

[英]How to iterate over php error and continue while loop?

我根据数据库中的用户名,使用以下代码从远程网站解析定义。 我正在使用简单的html dom解析器。

//database connection
include 'db.php';
//display errors
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
include 'simple_html_dom.php';

//select usernames order alphabetically
$row = mysqli_query($conn, "SELECT user_name FROM (
  SELECT * 
  FROM store 
  ORDER BY user_id DESC) 
  AS store ORDER BY user_id ASC");

//echo out definitions of usernames
while($lastusers = mysqli_fetch_array($row)) {
    echo '<br>' . $lastusers["user_name"];
    echo '<br>Definition:<br>';
    $html = file_get_html("https://www.merriam-webster.com/dictionary/" . $lastusers["user_name"]);
    $title = $html->find("div.card-primary-content", 0)->innertext;
    echo $title;

    //save definitions to corresponding username 
    $save = mysqli_query($conn, 'UPDATE  store
    SET     def = $title,
    WHERE   user_name = $lastusers["user_name"]'
    )
}

我的while循环将开始为每个用户名生成定义,直到未找到某些页面,从而导致错误终止循环。

警告:file_get_contents( https://www.merriam-webster.com/dictionary/colourings ):无法打开流:HTTP请求失败! 在第75行的/app/simple_html_dom.php中找不到HTTP / 1.0 404致命错误:在第18行的/app/test.php中的布尔值上调用成员函数find()

我的问题是如何跳过引发错误的用户名并继续循环? 另外,由于它们的用户名超过500个,因此该操作非常耗时,因此我要保存定义,并希望避免将错误保存到数据库中。

您可以抑制警告,如以下链接所示

如何处理PHP中的file_get_contents()函数警告?

或者另一种选择是编写自定义错误处理程序。 看到这个链接

PHP:如何使用set_error_handler()正确处理除通知外的所有错误?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM