質問

Sysadminとして、私はたまに簡単なアドホックプログラミングを行うことになります。私が進むにつれて学びようとしているので、一般的に、下のコードには、悪い練習や不要であるとあなたに飛び出すものがありますか?

具体的には、最後のステートメントの3つは、コードを不必要に複製しているように感じます。複雑に船外に出ることなく、さらに短縮する方法はありますか?

<?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);

?>
役に立ちましたか?

解決

あなたは不必要に繰り返しているわけではありませんが、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;
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top