Bitte helft mir mit bbcode und regexp

Nitromaus

Erfahrenes Mitglied
Hi Leute, ich weiß ich soll die suchfunktion benutzen, aber ich brauch trotdem eure Hilfe, mit RegExp hab ich noch nicht viel gemacht. Ich bin gerade beim Proggen eines Forums, und es wird dort auch eine art bbcode oder vBCode wie es hier im Forum gibt geben. Mit dem ersetzten von Smilies is net das Problem , sondern z.B bei einer URL, wie funktioniert, das mit den Parametern, damit da ein richtiger link drau? wird. Hier mal ein Beispiel(eckige Klammern, hab ich durch geschweifte ersetzt):
{URL=www.mysite.de}MeineSeite{/url} wird zu ->> <a href='www.mysite.de'>MeineSeite</a>

oder:
{URL}http://www.mysite.de{/url} wird zu ->> <a href='www.mysite.de'>http://www.mysite.de</a>

Es wäre nett wenn ihr auch eine kleine Beschreibung dazu abgibt, besonders zu der preg-pattern, die ich nun überhaupt nicht verstehe.
Gibt es auch ein ausführliches gute Tut zu RegExp.
Thanks im Vorraus.:-)
 
http://www.koehntopp.de/php/regexp.html#regexp-uri-klickbar

PHP:
/**
* replace URIs with appropriate HTML code to be clickable.
*/
function replace_uri($str) {
  $pattern = '#(^|[^\"=]{1})(http://|ftp://|mailto:|news:)([^\s<>]+)([\s\n<>]|$)#sm';
  return preg_replace($pattern,"\\1<a href=\"\\2\\3\"><u>\\2\\3</u></a>\\4",$str);
}
 
Danke Shiivva, aber kannst du mir das pattern ein bisschen genauer erklären? Das ganze soll nämlich auch mit meiner aRt gehen, und diese pattern versteh ich nicht.
 
kann das mir bitte einer erklären, ich kannte das tuorial sc´hon früher, aber das(die) pattern check ich trotdem nicht, das hier mein ich:
PHP:
  $pattern = '#(^|[^\"=]{1})(<a href="http://" target="_blank">http://</a>|<a href="ftp://" target="_blank">ftp://</a>|mailto<img src="images/smilies/b1.gif" border="0" alt="">news<img src="images/smilies/smile.gif" border="0" alt="">([^s<>]+)([s\n<>]|$)#sm';

bitte helft, ich würde es brauchen:(
 
was genau verstehst du daran nicht?
das komplette pattern? oder nen bestimmten teil davon nicht.
den preg_replace verstehst du?
 
nur das pattern, preg_replace versteh ich schon, ein bisschen kenn ich mich schon damit aus, einfache pattern versteh ich, aber bei den komplexeren:-)
 
Oh, jetzt seh ich erst, was Du wirklich willst....das mit dem [ url ] Code...
ist auch deutlich einfacher. Der Codeschnipsel da oben macht aus ganz normalen
[ url]http://[ /url] anklickbare Links. Du willst aber, dass der wenn jemand {url}[ url]http://www.TEXT.de[ /url]{ /url} nen Link draus
macht oder?
Das geht ganz einfach mit eregi_replace

PHP:
<?php

function links($new) 
{
$pattern = '\\{url\\}[ url]www.[ /url]([^\\[]*)\\{/url\\}';
return eregi_replace($pattern,"<a href=\"http://www.\\1\" target=_blank>\\1</a>",$new); 
}
$new="{url}[ url]www.404lounge.net[ /url]{/url}";
echo links($new); 

?>

Code:
\\{url\\}[ url]www.[ /url]([^\\[]*)\\{/url\\}


\\ als Makskierung für die Klammern;
Er sucht die Zeichenfolge
Code:
{url}[ url]www.[ /url]

([^\\[]*) ist eine zusammengefasste Zeichenkette; alle Zeichen egal ob Zahlen oder Buchstaben, die bis zu {/url} gehen, werden "festgehalten", als Teilmuster 1.
Dieses Teilmuster wird dann ja in der zweiten Zeile ausgegeben, einmal im a href - Tag und einmal als Linkbeschreibung.
 
Zurück