Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

Mit PHP Links parsen

  Alt 2. Mär 2007, 22:35
Hi,

auf meiner Webseite parse ich Links momentan nicht automatisch, sondern löse dies über einen noch nicht sehr guten BBCode-Parser:

Code:
$text = preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/sie", "generate_url('\\1','\\2')", $text);
Nun ist es so, dass In Kommentaren, die Benutzer schreiben, auch Links auftreten können. Es wäre schön, wenn diese Links auch anklickbar wären und mein Ansatz war dieser:

Code:
function parse_links($text)
{
   $text = preg_replace('#(.*)\@(.*)\.([^\s(\)<>"\']*)#', '[email="\\1@\\2.\\3"]\\1@\\2.\\3[/email]', $text);
   $text = preg_replace('=([^\s]*)(www.)([^\s(\)<>"\']*)=', '[url="http://\\2\\3"]\\2\\3[/url]', $text);
   
   return $text;
}
Der erste reguläre Ausdruck ist für E-Mail-Adressen, also schaut euch den zweiten an. Das klappt soweit auch wunderbar, sofern nirgendwo etwas steht wie

Code:
[url=www.foobar.net]Wuppdi[/url]
[img]http://www.foobar.de/blubb.png[/img]
Das gibt sonst natürlich ein Tag-Chaos, doch wie löse ich das Problem?
  Mit Zitat antworten Zitat