RegExpr mit PHP

hehejo

hehejo

blöder Purist
PHP:
Ich bin gerade dabei für meine Formulare auf meiner Homepage  diese Schreibweisen 
einzubauen:
[url=link]beschreibung[/url] und [b]fett[/b].

Bei einzelnen Ersetzungen (nur einmal [url] oder nur einmal [b])
im Text funktioniert das wunderbar. Nur wenn ich mehrere [url] bzw. [b] im Text habe, 
dann kommt er durcheinander bzw. führt das Suchmuster nur einmal aus.

Das möchte ich mit PHP und RegExp machen. Dazu nutze ich die Funktion
preg_replace($suchmuster, $ersetzung, $zeichenkette).

  für [url]
 $suchmuster = "#\[url=(http://.+)\](\w+)\[/url\]#";
 $ersetzung = "<a href=\"\\1\">\\2</a>";

 und für [b]
 $suchmuster = "#\[b\](\w+)\[/b\]#";
 $ersetzung = "<b>\\1</b>";

Die Suchmuster funktionieren - wie oben erwähnt wunderbar, wenn ich z.B. nur
[url=http://www.hehejo.de]hehejo[/url] als Text habe.

Aber aus aus
[b]fett[/b] [b]auch dick[/b]
wird (nur)
<b>fett</b> [b]auch dick[/b]

oder schlimmer: aus
[url=http://www.hehejo.de]hehejo[/url] [url=http://link]beschreibung[url]
wird das hier:
<a href="http://localhost/hehejo]hehejo[/url]  [url=http://link">beschreibung</a>

Was muss ich schreiben, damit die Fehler nicht mehr auftauchen?
 
Zuletzt bearbeitet:
he jo,

hab' mich eben versucht durch deinen post durchzukämpfen. nutz' doch bitte
PHP:
 anstatt [CODE]. die regexbereiche sind durch dein substituieren ja kaum zu entschlüsseln. machst du das weil die darstellung hier verzerrt wird oder bei dir auf der site? *confused*

[QUOTE=hehejo]preg_replace($suchmuster, $ersetzung, $zeichenkette)[/QUOTE]nutze lieber pregi_replace dafür.

gruss, sys.
 
systemdefender schrieb:
he jo,

hab' mich eben versucht durch deinen post durchzukämpfen. nutz' doch bitte
PHP:
 anstatt [CODE]. die regexbereiche sind durch dein substituieren ja kaum zu entschlüsseln. machst du das weil die darstellung hier verzerrt wird oder bei dir auf der site? *confused*

nutze lieber pregi_replace dafür.

gruss, sys.[/QUOTE]

Danke für den Tipp mit [php]. Das kannte ich noch nicht. Schade dass es nicht auch ein [bash] gibt ..
Ich hoffe man kann mein Posting jetzt leichter lesen.

Die Darstellung wird hier zerstört. 

pregi_replace() gibt es bei mir nicht.
 
eregi_replace
gibt's :-) Aber damit funktioniert es nimmer.

Für was ist denn das RFC gedacht?
 
hehejo schrieb:
eregi_replace
gibt's :-) Aber damit funktioniert es nimmer.

Für was ist denn das RFC gedacht?

dass du nicht _deine_ url in beispielen nutzen musst nutzen. sollte man wegen den harvester unterlassen.

teste mal folgendes aus. sollte so gehen...
PHP:
$string = eregi_replace("\\[url=\"([^\"]*)\"\\]([^\\[]*)\\[\\/url\\]","<a href=\"\\1\" target=_blank>\\2</a>",$string);
$string = eregi_replace("\\[url=([^\"]*)\\]([^\\[]*)\\[\\/url\\]","<a href=\"\\1\" target=_blank>\\2</a>",$string);

gruss, sys.
 
Zuletzt bearbeitet:
Verdammt, bei den RegExpr blick ich nicht durch!
Das zweite macht genau das Gleiche wie meines oben.
Der Link wird ebenfalls verstümmelt...

hmm...

noch mal zu "meinem" Format:
PHP:
[url=link]beschreibung[/url]
 
Zuletzt bearbeitet:
Wuerdest du endlich mal dein * und + folgen ungierig (ungreedy) angeben mit ?, haettest du kein Problem mehr. Das du hier mit eregs weiterkommt ist zwar auch richtig, aber absolut kein sinnvoller schachzug, wenn du schon 99% deines pregs hast.

pregs werden im uebrigen ausfuehrlich im php manual behandelt.

mfg
 
etuli schrieb:
Wuerdest du endlich mal dein * und + folgen ungierig (ungreedy) angeben mit ?, haettest du kein Problem mehr. Das du hier mit eregs weiterkommt ist zwar auch richtig, aber absolut kein sinnvoller schachzug, wenn du schon 99% deines pregs hast.

pregs werden im uebrigen ausfuehrlich im php manual behandelt.

mfg

Also ich hatte vor es mit pregs zu machen, da die schneller sein sollen.
Leider weiß ich nicht was du mit "ungreedy" meinst.

In der Schule hab ich das PHP-Manual durchgewalkt, aber anscheinend den Wald vor lauter Bäumen nicht mehr gesehen.
 
systemdefender schrieb:
p.s.: mit den target="_blank" hältst du mehr leute auf deiner site.
Das kenn ich schon.. Nur der xhtml 1.0 Validator hat das immer angemeckert.
War bei mir früher aber auch Standard!

edit
Danke, jetzt funktioniert das.
Ich werde das jetzt mal genau analysieren und hoffentlich rausbekommen was u.A. /si bedeutet.

Vielen Dank.
 
Zuletzt bearbeitet:
systemdefender schrieb:
ok, dann lieber perl-regex :D

PHP:
$string = preg_replace("/\[URL=(.*?)\](.*?)\[\/URL\]/si", "<a href=\"\\1\" alt=\"\" target=\"blank\">\\2</a>", $string);

gruss, sys.

p.s.: mit den target="_blank" hältst du mehr leute auf deiner site.

edit: siehe http://music.debian-sarge.org/url.php / http://music.debian-sarge.org/url.phps
Congrats. Damit oeffnest du dann beliebig Tuer und Tor fuer all jene, die gern benutzerdefinierte HTML Codes verwenden wollen. *kopfschuettel*
 
das regex-buch von o'reilly kann ich nur empfehlen. ich hoffe, es hat bei der übersetzung keinen schaden genommen; ich hab es in englisch gelesen.

-> http://doc.debian-sarge.org/perl/intro/regex.txt

gruss, sys.

edit:
etuli schrieb:
Congrats. Damit oeffnest du dann beliebig Tuer und Tor fuer all jene, die gern benutzerdefinierte HTML Codes verwenden wollen. *kopfschuettel*
jepp. z.b. für hehejo :D er wird das sicher nur intern für sein eigenes kleines cms auf seiner site verwenden. wenn du bedenkst, was hier alles gepostet wird (autologin für root, etc.), macht das nicht mehr viel aus.
(btw: du hinterlässt mit deinen aussagen bei mir nen destruktiven eindruck. ein forum sollte jedoch konstruktiv sein. geht dir hier irgendwas gegen den strich?)
 
Zuletzt bearbeitet:
:-)
Bisher funktioniert es eh nur auf localhost (nutze lampp)..
Im Netz will das nicht so recht. Vll. haben die auch das PHP nicht mit allem kompiliert.

Das mit Tür und Tor verstehe ich jetzt nicht so ganz. Aber em Ende soll es auf meiner Homepage Einsatz finden.
 

Ähnliche Themen

NagiosGrapher 1.7.1 funktioniert nicht

problem

Webinterface für Gameserver/Shellscript wird nicht ausgeführt

Habe da ein Problem was nicht wegbekomme

Problem mit Squid-Proxy Transparent + ASA 5505

Zurück
Oben