Clanintern Clanintern Clanintern

Forum

Öffentliche Foren
geschlossen
FORUM: Spiele & Computer THEMA: Problem mit preg_replace
AUTOR BEITRAG
Whiteknight KKK

RANG Ruler

#1 - 12.06 16:17

Hi Leute,

ich hab ein Forum programmiert und nun soll der Beitrags-Text formatiert werden. Zum einen sollen Hyperlinks automatisch erkannt und zu Links gemacht werden. Das mache ich derzeit wie folgt:

PHP-code:
<?php 
$text 
preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<a href=\"$1\" target=\"_blank\">$1</a>"$text);
 
?>


Und dann soll noch der [ url = ] [ / url ] Tag möglich sein.
PHP-code:
<?php 
$suchmuster 
"#(\[url=)(.*)(\])(.*)(\[/url\])#";
$replace "<a href='\\2' target=_blank>\\4</a>";
$text preg_replace($suchmuster,$replace,$text);
 
?>


Mein Problem ist jetzt die beiden Codes zusammen zum Laufen zu bekommen. Denn entweder er wandet vorher die URL's in Hyperlink-Code um und hat dann Probleme mit dem URL-Tag oder umgekehrt ich wandel erstmal die URL-Tags um und hab dann Probleme das er nochmal versucht die URL umzuwandeln.

Hoffe ihr versteht was ich meine? Er wandelt halt dann 2 mal die URL um, er soll aber (jenachdem was es für eine URL ist) nur eine der beiden Methoden anwenden.
horst

RANG Prophet of Clanintern

#2 - 12.06 16:44

soll dasisteintextohneleerzeichenwww.google.deblablabla auch einen google link enthalten? oder soll das nur passieren wenn man "das ist ein text mit leerzeichen www.google.de bla bla bla" eintippt. Sollte 2. reichen, kannnst du ja abfragen, ob der "stand-alone" link von leerzeichen umschlossen ist oder ob er am anfang / ende des textes steht. ansonsten halt nicht ersetzen.
Whiteknight KKK

RANG Ruler

#3 - 12.06 16:49

Ne ich glaub du verstehst mich net bzw. ich drück mich etwas verwirrt aus.

Mein Problem ist einfach, dass normale URL's wie http://www.google.de automatisch in Links umgewandelt werden sollen (genau wie hier im CI ja auch).

Es wird dann halt einfach nur der entsprechende HTML-Code um den Link gebaut, soweit sogut. Aber wenn jetzt das 2. preg_replace kommt und er nach [url= sucht, dann hat er ja aus der folgenden URL bereit HTML-Code generiert.

Dann steht da sowas wie
code:

[url=<a href="http://www.google.de">.....


Durch das 1. preg_replace wurde die URL ja schon umgewandelt. Das soll er aber nicht, sofern diese mit url= beginnt
k-to-the-laus(topher)

RANG Master of Luck

#4 - 12.06 17:28

Wie wäre es, wenn du die ohne Tags eingegeben URL nicht in einen Link umwandelst, sondern sie einfach in [.url]http://www.deineurl[./url] umwandelst und den rest dann dem url parser überlässt?

Allerdings würd ich die RegExp noch ein wenig überarbeiten ... z.B., dass das Zeichen vor der URL kein "=" und kein "]" sein darf, da du sonst wieder den oben beanstandeten Fehler hättest...
Whiteknight KKK

RANG Ruler

#5 - 12.06 17:41

die Idee hatte ich auch schon, die "normale" URL ohne Tags einfach in [.url] umzuwandeln, aber irgendwas hatte ich immer falsch. Bekomme bei dieser Funktion immer das kotzen

Kannst Du mir da helfen? Ich raffs einfach net!
Whiteknight KKK

RANG Ruler

#6 - 13.06 11:36

ok habs jetzt inzwischen rausbekommen *kotz* man das ist ein Krampf mit den regulären Ausdrücken.

Thread kann zu.
‹• ⊂⌈α⊂κ¥ •›

RANG Deckschrubber

#7 - 13.06 12:23

wäre nett wenn du die lösung posten könntest.
hasse threads die einfach mit einem "habs gelöst, kann zu" enden!
Whiteknight KKK

RANG Ruler

#8 - 14.06 11:42

gerne...
PHP-code:
<?php 
//Links automatisch erkennen und zum Hyperlink machen
$text preg_replace("/(\s)([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","$1<a href=\"$2\" target=\"_blank\">$2</a>"$text);                    

//Hyperlink
$suchmuster "#(\[url=)(.*)(\])(.*)(\[/url\])#";
$replace "<a href='\\2' target='_blank'>\\4</a>";
$text preg_replace($suchmuster,$replace,$text);
 
?>
Whiteknight KKK

RANG Ruler

#9 - 16.06 12:26

geschlossen