REGEX für Umwandlung URL

Wie wäre es mit selber ausporbieren? Wir sind hier kein "Mach doch mal" Forum. Es gibt hier viele Anlaufsstellen für soetwas.
1. http://de.php.net
2. Suchfunktion hier um mehr über RegEx (preg_replace() / preg_match()) herauszufinden
3. Es gibt hier ein passendes Tutorial dazu.

Wenn es dann immernoch nicht geht, kannst du gerne deinen Ansatz hier zeigen und darum bitten, dass man dir hilft, ihn dir zu berichtigen.
 
Die Ausdrücke deines Vorschlags sind jedoch nicht sehr genau, denn auch „http://-Adresse“ wird in einen HTML-Verweis umgewandelt.
Stattdessen sollte ein kompletter regulärer Ausdruck für URL-Adressen genommen werden, der anhand der Spezifikationen generiert wurde. Das ganze in einer handlichen Funktion verpackt, könnte etwa wie folgt aussehen:
PHP:
<?php

	function foo( $string )
	{
		$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'] . '>es';
		return preg_replace($pattern, 'bar("\1")', trim($url));
	}

	function bar( $url )
	{
		return '<a href="'.$url.'">'.$url.'</a>';
	}

?>
Diese umfasst jedoch nur die drei beziehungsweise vier meist genutzten Schemata der insgesamt 17 URL-Schemata.

Wenn du nun behaupten möchtest, dass „http://www.example.net“ oder „http://example.com“ nicht erkannt werden, hast du recht, da diese keine vollwertige HTTP-URL darstellen – die erstere wegen fehlenden Schemas schon garnicht.
 
Zurück