.edu ドメインを検証する機能を実装しました。これが私がやっている方法です:
if( preg_match('/edu/', $matches[0])==FALSE )
return FALSE;
return TRUE;
ここで、.pdf や .doc などのドキュメントを指す URL もスキップしたいと思います。
このために、次のコードは機能するはずですが、機能しません。
if( preg_match('/edu/', $matches[0])==FALSE || preg_match('/pdf/i', $matches[0])!=FALSE || preg_match('/doc/i', $matches[0]!=FALSE))
return FALSE;
return TRUE;
この点でどこが間違っていますか?さらに、URL文字列でチェックするドキュメントタイプのリストがあるように preg_match を実装するにはどうすればよいですか。特定の種類のドキュメントが見つかった場合は、false を返す必要があります。つまり、さまざまなドキュメント タイプのリスト (おそらく配列) を $pattern として提供し、URL で検索したいと考えています。
注: matches[0] には URL 文字列全体が含まれます。例: http://www.nust.edu.pk/Documents/pdf/NNBS_Form.pdf
関数のコード:
public function validateEduDomain($url) {
// get host name from URL
preg_match('@^(?:http://)?([^/]+)@i', $url, $matches);
$host = $matches[1];
// get last two segments of host name
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
if( preg_match('/edu/', $matches[0])!=FALSE && (preg_match('/pdf/i', $matches[0])==FALSE || preg_match('/doc/i', $matches[0]==FALSE)))
return TRUE;
return FALSE;
}