ユーザーが URL をテキストエリアに追加する小さなスクリプトを書いています。単一のリンクを検証するこの小さな関数を見つけました。
function isValidURL($url){
return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url);
}
しかし、リンクの配列を検証するために必要です
私は爆発を使用して、次のようにそれぞれを分離します。
$urls = explode("\n", $_POST['urls']);
を使用して URL の配列をループする必要があることは理解していますが、自分の内部foreach
で foreach を取得するにはどうすればよいですか$var
elseif
例:
function isValidURL($url){
return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $valid);
}
$urls = array('http://iamvalid.com','iamnotvalid.com','http://iamvalidaswell.com');
foreach ($urls as $check) {
$validate = isValidURL($check);
}
if($check != $validate) {
// If fail
$result = 'fail';
} else {
// If pass
$result = 'pass';
} // if
echo $result;
(デモ目的で expode の代わりに配列を使用)
更新: Deepaks の回答はうまく機能しますが、私の mysql インジェクション防止機能と競合します
競合する関数:
function sanitizeSQL($input) {
if(get_magic_quotes_gpc() == true){
$input = stripslashes($input);
}
return mysql_real_escape_string(htmlspecialchars($input));
}