Problem mit RegEx

Neok

Erfahrenes Mitglied
Hallo,

ich will mit der Funtion preg_replace(), URLs aus einem Text zu Links machen, dazu hab ich die RegEx verwendet.
magiclink_func.php.inc
PHP:
//Zeile 4
$pattern-url1 = "!^(www\.{1}?|http://{1}?|https://{1}?|http://www\.{1}?|https://www\.{1}?)([a-zA-Z0-9-]{1,69}[^. ])(\.)([a-zA-Z0-9-]{1,69})(\.)([a-zA-Z0-9]{2,3})$!";
//Zeile 5
$replacement-url1 = '<a href=\"www.$2$3$4$5$6\">';
$pattern-url2 = "!^(www\.{1}?|http://{1}?|https://{1}?|http://www\.{1}?|https://www\.{1}?)([a-zA-Z0-9-]{1,69}[^. ])(\.)([a-zA-Z0-9-]{1,69})(\.)([a-zA-Z0-9]{2,3})(/)([^ ]*)?!";
$replacement-url2 = "<a href=\"www.$2$3$4$5$6$7$8\">";
if (preg_match($pattern-url1,$text)) {
  $text = preg_replace($pattern-url1,$replacement-url1, $text);
} else {
  $text = preg_replace($pattern-url2,$replacement-url2, $text);
}
Ich bekomme vom Parse immer diesen Fehler:
Code:
Parse error: parse error in C:\Intranet\apachefriends\xampp\htdocs\gbook\magiclink_func.php.inc on line 4
 
Aber der Otto-Normal-User schreibt beginnt eine Internet-Adresse meist aus Faulheit mit "www" und falls du die Replacements meinst, das dürfte wohl keine Probleme geben, da viele Browser das "http://" selber anhängen. Sollte ich aber trotzdem ändern...
 
[…] und falls du die Replacements meinst, das dürfte wohl keine Probleme geben, da viele Browser das "http://" selber anhängen. Sollte ich aber trotzdem ändern...
Browser vervollständigen zwar eingegebene Adressen/Adressfetzen zu vollständigen URLs, jedoch nicht Ressourcenangaben von Hyperlinks.
 
Inzwischen hab ich meine Funktion mal bearbeitet:

PHP:
<?php
function magic_link($text) {
  $patternurl1 = '!^(www\.{1}?|http://{1}?|https://{1}?|http://www\.{1}?|https://www\.{1}?)([a-zA-Z0-9-]{1,69}[^. ])(\.)([a-zA-Z0-9-]{1,69})(\.)([a-zA-Z0-9]{2,3})$!';
  $replacementurl1 = '<a href=\"\\1\\2\\3\\4\\5\\6\">LINK</a>';

  $patternurl2 = '!^(www\.{1}?|http://{1}?|https://{1}?|http://www\.{1}?|https://www\.{1}?)([a-zA-Z0-9-]{1,69}[^. ])(\.)([a-zA-Z0-9-]{1,69})(\.)([a-zA-Z0-9]{2,3})(/)([^ ]*)?!';
  $replacementurl2 = '<a href=\"\\1\\2\\3\\4\\5\\6\\7\\8\">LINK</a>';

  $text = preg_replace($patternurl2,$replacementurl2, $text) OR $text = preg_replace($patternurl1,$replacementurl1, $text);
  return $text;
}
?>

Aber aus z.B. "www.tutorials.de" wird aber leider kein Link!
Die RegEx ist mit dem RegEx-Coach getestest und funktioniert.
Was ist denn da jetzt wieder falsch dran?
 
Zuletzt bearbeitet:
Zurück