Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP]preg_replace und UBB-Tags.... (https://www.delphipraxis.net/14167-%5Bphp%5Dpreg_replace-und-ubb-tags.html)

Alexander 3. Jan 2004 18:49


[PHP]preg_replace und UBB-Tags....
 
HAllo,
ich plage mich den regulären Ausdrücken und mit der PHP-Funktion preg_replace herum.
Sinn ist es, einen kleinen Parser zu schreiben, der mir UBB-Tags wie hier im Forum durch HTML-Tags ersetzt.
Das klappt auch super ;-). Allerdings will ich auch, wenn kein [URL]-Tag vorhanden ist, dass eine URL die mit http:// anfängt geparst wird.
Das ist allerdnigs schwieriger als man denkt, da schon umgewandelter Code nochmal umgewandelt wird.
Hier mal der Source:
Code:
  /* [url]http;//www.ttt.de[/url] */
  $text = preg_replace("/\[url\]http:\/\/(.*?)\[\/url\]/si", "[url="http://\\1"]http://\\1[/url]", $text);

  /* [url]www.ttt.de[/url] */
  $text = preg_replace("/\[url\](.*?)\[\/url\]/si", "[url="http://\\1"]http://\\1[/url]", $text);

  /* [url]http://www.ttt.de[/url] */
  $text = preg_replace("/\[url=www(.*?)\](.*?)\[\/url\]/si", "[url="http://www\\1"]\\2[/url]", $text);

  /* [url=http://www.test.de]test[/url] */
  $text = preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/si", "[url="\\1"]\\2[/url]", $text);

  /* [url]http://www.tset.de[/url] (ohne url-tag) */
  $text = preg_replace("/\[^\]]http:\/\/(.*?)[^x] /si", "[url="\\1"]\\2[/url]", $text);
Wie gesagt: Beim letzten fehlen mir Ideen wie ich das parsen könnte. Könnt ihr mir helfen?

fkerber 3. Jan 2004 21:04

Re: [PHP]preg_replace und UBB-Tags....
 
Hi!

Versuch doch einfach beim parsen des URL-Tags eine Flag zu setzen, sodass das nachfolgende parsen der URL übergangen wird.

Ciao fkerber

Alexander 3. Jan 2004 21:45

Re: [PHP]preg_replace und UBB-Tags....
 
Ich versteh nicht ganz, wie mir dieser Flag nützen soll..
Kannst du deine Idee mal etwas genauer darstellen?

moin339 3. Jan 2004 22:28

Re: [PHP]preg_replace und UBB-Tags....
 
Wenn du zuerst nach adressen ohne [URL] suchst und die in umwandelst und dann nach [URL] dürfte es doch keine Probleme geben oder?

ciao, moin339

fkerber 3. Jan 2004 22:52

Re: [PHP]preg_replace und UBB-Tags....
 
Hi!
Meine Idee war, du stellst fest, wenn du einen [URL]-Tag findest, in Zeile X, Position Y ist ein bereits geparster URL-String mit Hyperlink.
Taucht diese Position dann beim späteren parsen der Url an sich wieder auf, wird sie übergangen.

Prinzipiell müsste aber auch moin339s Vorschlag gehen, indem du einfach alle URL-Tags löscht und dann direkt nach den Links suchst.
Diese Methode stellt wiederum die Existenz des [URL]-Tags in Frage, den ich hier im Forum zum Beispiel auch nie nutze, da es ja auch automatisch geht.

Ansonsten (also Original Vorschlag von moin339) würden sie auch doppelt geparst:

Code:
[.URL]http://www.test.de[./URL]
-->[.URL]<a href="http://www.test.de>aaaa</a>[./URL]
==>[url="<a href="]aaaa[/url]>bbbb</a>
Oder verstehe ich da etwas falsch?


Ciao fkerber

moin339 3. Jan 2004 23:00

Re: [PHP]preg_replace und UBB-Tags....
 
du kannst doch zuerst alle links die mit http anfangen ins html-format umwandeln, allerdings nur wenn davor kein [url] tag steht, und dann alle adressen umwandeln die in einem [url] tag stehen

das müsste doch egehen?

ciao, moin339

P.S. du musst allerdings noch darauf achten, dass es auch solche url-links gibt: [.url=http://www.delphipraxis.net]DP[./url]

Alexander 4. Jan 2004 08:07

Re: [PHP]preg_replace und UBB-Tags....
 
Zitat:

Code:
[.URL]http://www.test.de[./URL]
-->[.URL]<a href="http://www.test.de>aaaa</a>[./URL]
==>[url="<a href="]aaaa[/url]>bbbb</a>

So eben da liegt die schwierigkeit, das die Links dann doppelt geparst werden. Und mit den URL-Tags kann man ja einen Link auch s aussehen lassen: klick. Und da sehe ich den Vorteil des URL-Tags.

Zitat:

Zitat von Moin
du kannst doch zuerst alle links die mit http anfangen ins html-format umwandeln, allerdings nur wenn davor kein [url] tag steht, und dann alle adressen umwandeln die in einem [url] tag stehen

das müsste doch egehen?

ciao, moin339

P.S. du musst allerdings noch darauf achten, dass es auch solche url-links gibt: [.url=http://www.delphipraxis.net]DP[./url]

Und da liegt wieder meine Schwierigkeit :lol:
Naja ich fummel ncoh ein wenig rum...
Vielleicht fällt euch ja noch was ein.

RomanK 4. Jan 2004 12:07

Re: [PHP]preg_replace und UBB-Tags....
 
Hoi alex,
wie wäre es, wenn du nur URLs ersetzt die danach ein Leerzeichen haben.
Bei URL und fertigen Links usw. trifft das nicht zu da diese ja durch ein [/URL] oder </a> bzw " "beendet" werden.

Alexander 4. Jan 2004 12:11

Re: [PHP]preg_replace und UBB-Tags....
 
Das wäre ne Idee, vielen Dank ich kucke mir das nachher nochmal an.

moin339 5. Jan 2004 22:00

Re: [PHP]preg_replace und UBB-Tags....
 
Auf Leerzeichen prüfen geht auch nicht. Was ist wenn man eine URL in Klammern setzt? dann gehts wieder net ;)

Du kannst doch prüfen ob vor einer Adresse eine eckige Klammer oder ein Gleichheitszeichen steht, wenn nicht einfach in <a href=""> umwandeln. Als zweiten Schritt dann die Adressen vor denen eine Eckige Klammer oder ein Gleichheitszeichen steht umwandeln. Dann wird nix doppelt umgewandelt.

ciao, moin339

P.S. such doch einfach mal bei google nach einem enstrechenden RegEx. Wenn du dort nix findest kannst du dir ja mal den Quellcode von phpBB ansehen. Du bist ja nicht der erste mit diesem Problem ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz