テキストエリアを介して送信されたURLを検証する簡単な関数を作成しました(1行に1つのリンク)。
function validate_urls($value)
{
//final array of links
$links = array();
$value = array_map(function($a) use (&$links){
$a = trim($a);
if(strlen($a) !== 0 and (strpos($a, 'http') !== 0 or strpos($a, 'https') !== 0)){
$a = 'http://'.$a;
}
$url = parse_url($a,PHP_URL_HOST);
if($url != null and !in_array($a, $links) and filter_var($a, FILTER_VALIDATE_URL) !== false and checkdnsrr($a)){
$links[] = $a;
}
return false;
}, explode("\n",$value));
return $links;
}
var_dump(validate_urls($_POST['links']);
これが行うことは、
- URLは有効です
- URLはアクティブです
- URLは重複していません
問題は、なぜそれが機能しない(空の配列を返す)のですか?すべてのチェックをチェックしましたが、機能するはずですが、機能しません。コードが乱雑な場合は申し訳ありませんが、私はまだ学習しようとしています。