我正在尝试根据以下代码生成行。有人能告诉我我做错了什么吗?我无法让错误报告在我所处的地方工作。你能在while循环中使用cURL吗?
while ($row = mysql_fetch_array($result_entries))
if ($row['active'] == "y") {
$ch = curl_init($row['url']);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// $retcode > 400 -> not found, $retcode = 200, found.
curl_close($ch);
if ($retcode == '[4-5][0-9][0-9]'){
echo "<tr class=\"bad"\"><td><a href=\"" . $row['code'] . "\" target=\"_blank\">". $row['code'] . "</a></td><td>" . $row['url'] . "</td><td>" . $row['requester'] . "</td></tr>\n\n";
} else if ($retcode == '[2-3][0-9][0-9]'){
echo "<tr class=\"good"\"><td><a href=\"" . $row['code'] . "\" target=\"_blank\">". $row['code'] . "</a></td><td>" . $row['url'] . "</td><td>" . $row['requester'] . "</td></tr>\n\n";
} else {
echo "<tr class=\"inactive\"><td>". $row['code'] . "</td><td>" . $row['url'] . "</td><td>" . $row['requester'] . "</td></tr>\n\n";
}
}
答案 0 :(得分:3)
您应该在$retcode
变量
if($retcode >= 400 && $retcode <= 599) {
// Code for 400> status here
} else if ($retcode >= 200 && $retcode <= 399) {
// Code for 200-300 status Here
} else {
// Fall through case here
}
您的代码未正确地将结果代码与字符串进行比较(您尝试将其视为正则表达式)。
数字比较将更快,更容易阅读,并且更安全的解决方案。
答案 1 :(得分:0)
看起来你正试图在比较中使用正则表达式。 $retcode
只是一个整数。它应该是这样的:
if ($retcode == 400){
如果您希望许多代码执行if的相同块,则可以在preg_match()
上使用$retcode
,尽管使用switch
或大于小于if($retcode >= 400 && $retcode <= 599){
可能更好即{{1}}。