AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP]preg_replace und UBB-Tags....

Ein Thema von Alexander · begonnen am 3. Jan 2004 · letzter Beitrag vom 6. Jan 2004
Antwort Antwort
Seite 1 von 2  1 2      
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#1

[PHP]preg_replace und UBB-Tags....

  Alt 3. Jan 2004, 19:49
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?
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

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

  Alt 3. Jan 2004, 22:04
Hi!

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

Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#3

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

  Alt 3. Jan 2004, 22:45
Ich versteh nicht ganz, wie mir dieser Flag nützen soll..
Kannst du deine Idee mal etwas genauer darstellen?
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von moin339
moin339

Registriert seit: 23. Sep 2002
Ort: Hamburg
136 Beiträge
 
#4

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

  Alt 3. Jan 2004, 23:28
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
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#5

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

  Alt 3. Jan 2004, 23:52
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
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von moin339
moin339

Registriert seit: 23. Sep 2002
Ort: Hamburg
136 Beiträge
 
#6

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

  Alt 4. Jan 2004, 00:00
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]
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#7

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

  Alt 4. Jan 2004, 09:07
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 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
Naja ich fummel ncoh ein wenig rum...
Vielleicht fällt euch ja noch was ein.
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von RomanK
RomanK

Registriert seit: 7. Jun 2002
Ort: Kirchheim unter Teck
1.036 Beiträge
 
Delphi 7 Personal
 
#8

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

  Alt 4. Jan 2004, 13:07
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.
Roman Keller
Krieg ist Gottes Art den Amerikanern Geographie beizubringen!
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#9

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

  Alt 4. Jan 2004, 13:11
Das wäre ne Idee, vielen Dank ich kucke mir das nachher nochmal an.
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von moin339
moin339

Registriert seit: 23. Sep 2002
Ort: Hamburg
136 Beiträge
 
#10

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

  Alt 5. Jan 2004, 23:00
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:27 Uhr.
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