Emailvalidierung mit Preg_match klappt nicht

B

besi

Hallo

Ich habe folgende Funktion:

PHP:
private function validateUrl($url){
	if(preg_match('#^http\:\/\/[a-z0-9-]+.([a-z0-9-]+.)?[a-z]+#i', $url))
		return true;
	else
		return false;
}

Wenn ich aber nun eine url z.b. "http://www.photastic.ch" ausprobiere, klappt es nicht und liefert immer false. Da ich leider mit regular expression nicht gerade ein hero bin, werd ich aus der Sache nicht schlau...
 
Probier mal Folgendes:
PHP:
<?php

	function isValidURL( $url )
	{

		$urlPatterns = array(
			// @link	http://www.foad.org/~abigail/Perl/url2.html
			'http'   => "(?:https?://(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))?)(?:/(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;:@&=])*)(?:/(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;:@&=])*))*)(?:\?(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;:@&=])*))?)?)",
			'ftp'    => "(?:ftp://(?:(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;?&=])*)(?::(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;?&=])*))?@)?(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))?))(?:/(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[?:@&=])*)(?:/(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[?:@&=])*))*)(?:;type=[AIDaid])?)?)",
			'mailto' => "(?:mailto:(?:[a-zA-Z\d$\-_.+!*'(),;/?:@&=]|(?:%[a-fA-F\d]{2}))+)"
		);
		$pattern = '<^' . $urlPatterns['http'] . '|' . $urlPatterns['ftp'] . '|' . $urlPatterns['mailto'] . '$>';
		return preg_match($pattern, trim($url));

	}

?>
Diese prüft URLs mit den meist genutzen Schemata http:, https:, ftp: sowie mailto: auf ihre syntaktische Richtgkeit.
 
Zurück