Forum Doku Wiki Blog

Forumsarchiv 2008, April
url wird doppelt geparst

archivierte Beiträge lesen

  1. (PHP) url wird doppelt geparst von christian, 10. 04. 2008, 17:07

url wird doppelt geparst

Der folgende Beitrag wurde am 10. 04. 2008, 17:07 Uhr von christian veröffentlicht.

Hallo,
ich habe ein kleines Problem, auf dessen (sicherlich einfache) Lösung ich einfach nicht komme:

Per Eingabefeld (textarea) kann man auf meiner Seite einen Eintrag in meine Datenbank machen. Falls irgendwo Links in diesem Text sind werden die geparst:

$text= preg_replace("/((http(s?):\/\/)|(www\.))(([\w\-\.]+)(\/[^[:space:]]+)*)/i", "[url=\"http$3://$4$5\"]$2$4$5[/url]", $text);

Aus http://www.xy.de wird also [url=http://www.xy.de]http://www.xy.de[/url]

Soweit also kein Problem.
Wenn der Benutzer jedoch in seinem Text selber schon einen solchen Link erzeugt z.B. konkret [url=http://www.xy.de]Hier klicken[/url] schreibt,
wird der erste Teil (http://www.xy.de)doppelt geparst und das ist natürlich falsch.

Wie kann ich verhindern, dass nur solche Links geparst werden, die nicht innerhalb von [url] [/url] stehen??

Gruß
christian

url wird doppelt geparst

Der folgende Beitrag wurde am 10. 04. 2008, 17:23 Uhr von adgrafik veröffentlicht.

Hallo!

> $text= preg_replace("/((http(s?):\/\/)|(www\.))(([\w\-\.]+)(\/[^[:space:]]+)*)/i", "[url=\"http$3://$4$5\"]$2$4$5[/url]", $text);

Wenn du ausschließen kannst, dass bei den Tags vor dem http kein space kommt, könnstest du das Zeichen vor dem http befragen:

... [^=]http ...

Also das Zeichen vor http darf kein "="-Zeichen sein. Ob da noch ein Backslash hinzukommt, mußt du ausprobieren.

lg ad


--
ad:grafik, arno dudek : grafik & new media
grafik: http://www.adgrafik.at, mailto:office@adgrafik.at
hosting: http://www.netFrog.at, mailto:info@netFrog.at
mailing: http://www.netFrog.at, mailto:info@netFrog.at

url wird immer noch doppelt geparst

Der folgende Beitrag wurde am 10. 04. 2008, 18:11 Uhr von christian veröffentlicht.

> Wenn du ausschließen kannst, dass bei den Tags vor dem http kein space kommt, könnstest du das Zeichen vor dem http befragen:
>
> ... [^=]http ...

Also ich hab es jetzt folgendermaßen ausprobiert:

$text= preg_replace("/(([^=]http(s?):\/\/)|(www\.))(([\w\-\.]+)(\/[^[:space:]]+)*)/i", "[url=http$3://$4$5]$2$4$5[/url]", $text);

Allerdings hat sich im Ergebnis bisher nichts geändert

url wird immer noch doppelt geparst

Der folgende Beitrag wurde am 11. 04. 2008, 08:53 Uhr von adgrafik veröffentlicht.

Morgen!

> $text= preg_replace("/(([^=]http(s?):\/\/)|(www\.))(([\w\-\.]+)(\/[^[:space:]]+)*)/i", "[url=http$3://$4$5]$2$4$5[/url]", $text);
>
> Allerdings hat sich im Ergebnis bisher nichts geändert

War nur ein Denkansazt, den ich selbst nicht getestet habe. Liegt aber wohl daran, dass es eine OR-Bedingung ist. Es wird hier nicht nur nach http sondern auch nach www gesucht. Dort müsste es dann auch ausgeschlossen werden, oder gleich nach der ersten Klammer.

Was du auch noch versuchen könntest ist (^\[url=)

lg ad


--
ad:grafik, arno dudek : grafik & new media
grafik: http://www.adgrafik.at, mailto:office@adgrafik.at
hosting: http://www.netFrog.at, mailto:info@netFrog.at
mailing: http://www.netFrog.at, mailto:info@netFrog.at

url wird doppelt geparst

Der folgende Beitrag wurde am 11. 04. 2008, 02:16 Uhr von dedlfix veröffentlicht.

echo $begrüßung;

> Wie kann ich verhindern, dass nur solche Links geparst werden, die nicht innerhalb von [url] [/url] stehen??

Du suchst also die Stellen, denen nicht bestimmte Zeichenfolgen vorangehen und nachfolgen. Das geht mit Assertions. Die testen auf Zeichenfolgen, ohne dass diese in das Ergebnis einfließen.


echo "$verabschiedung $name";

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4