作为一个系统管理员,我最终每隔一段时间做一些简单的临时编程。我正在努力学习,因此一般情况下,下面的代码中是否有任何内容可以作为不良实践或其他不必要的内容跳出来?
具体来说,最后的3个if语句感觉就像是在不必要地重复代码。是否有任何方法可以进一步缩短它而不会过于复杂?
<?php
define('TAKEN', 'Match: One');
define('AVAIL', 'Match: No Matches');
define('DATAMINE', 'Data mining count exceeded');
$ch = curl_init("http://co.za/cgi-bin/whois.sh?Domain=example");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);
function search_whois($findit) {
global $output;
if (strpos($output, $findit) === false)
return false;
if (is_int(strpos($output, $findit)))
return true;
}
if (search_whois(TAKEN))
echo "Domain is taken.\n";
if (search_whois(AVAIL))
echo "Domain is available.\n";
if (search_whois(DATAMINE))
echo "Blocked for datamining, try again later.\n";
// var_dump($output);
?>
答案 0 :(得分:3)
你没有不必要地重复,但我很困惑,因为search_whois没有域名。
我重组了所以search_whois是自包含的
function search_whois($domain) {
$ch = curl_init("http://co.za/cgi-bin/whois.sh?Domain=$domain");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);
if (strpos($output, AVAIL) >= 0) {
echo "Domain is available.\n"
return true;
}
if (strpos($output, TAKEN) >= 0)
echo "Domain is taken.\n";
else if (strpos($output, DATAMINE) >= 0)
echo "Blocked for datamining, try again later.\n"
return false;
}