AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP] Regulärer Ausdruck zum Filtern eines Hyperlinks
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Regulärer Ausdruck zum Filtern eines Hyperlinks

Ein Thema von MathiasSimmack · begonnen am 15. Jan 2007 · letzter Beitrag vom 27. Okt 2007
Antwort Antwort
Seite 3 von 3     123   
MathiasSimmack
(Gast)

n/a Beiträge
 
#21

Re: [PHP] Regulärer Ausdruck zum Filtern eines Hyperlinks

  Alt 26. Okt 2007, 21:39
Vorgeschichte: ich nutze ein kleines CSharp-Programm und erstelle damit aus der SQL-Datei meiner Datenbank eine angepasste Version (Umlaute werden konvertiert, Kommentare können ggf weggelassen werden, usw.). Jetzt stecken in der SQL-Textdatei noch meine Suchanfragen à la
Code:
<google>irgendwas</google>
Wenn ich schon mal dabei bin, will ich die gleich mit umwandeln und die HTML-Zeichen < und > durch eckige Klammern ersetzen. Ich habe das Anfragemuster quasi 1:1 aus der PHP-Version übernommen:
Code:
string pattern = string.Format
  (@"&lt;((?<tag>{0})(=(.*))?)&gt;(.*[^&lt;*]?)&lt;\/(\k<tag>)&gt;", searchEngines);
searchEngines ist ein String "google|heise|heisenews|...|thumb". ?<tag> ist eine Gruppierung, die sicherstellen soll, das am Anfang der selbe Tag, etwa "google", steht wie am Schluss. Jetzt tritt das gleiche Problem wieder auf. Diese Tags
Code:
<google>bla</google> <heise>text</heise>
werden anstandslos gefunden. Kommt am Schluss aber noch ein Google dazu:
Code:
<google>bla</google> <heise>text</heise> <google>foo</google>
findet der String nur das erste und letzte "google" und nimmt alles dazwischen als Text. Wieso?


Bevor das Missverständnis kommt: ich habe der Einfachheit halber die spitzen Klammern genommen! In den beiden Beispielen am Schluss meine ich damit die HTML-Zeichen &lt; und &gt;, so wie in der Suchanfrage gezeigt.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#22

Re: [PHP] Regulärer Ausdruck zum Filtern eines Hyperlinks

  Alt 26. Okt 2007, 22:51
Hab mir nicht die ganzen Beiträge davor durchgelesen, eine vereinfachte Version deines Regexes läuft bei mir jedenfalls durch:
Code:
&lt;(?<tag>google)(=(.*))?&gt;(.*?)&lt;/(\k<tag>)&gt;
Das Problem war der greedy *-Operator zwischen den Tags ("(.*[^&lt;*]?").
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#23

Re: [PHP] Regulärer Ausdruck zum Filtern eines Hyperlinks

  Alt 27. Okt 2007, 07:45
Das Ergebnis ändert sich bei mir nicht. Meine Suchtags im Blog arbeiten nach der Syntax
Code:
<suchmaschine>Suchbegriff(e)</suchmaschine>
<suchmaschine=Suchbegriff(e)>Text für Beitrag</suchmaschine>
Also im Prinzip wie das Suchtag in der DP. Hier mal einen kurzen Textauszug aus einem Beitrag. Damit es nicht so blöd aussieht, nehme ich wieder die spitzen Klammern:
Zitat:
<heisenews=90069>Google</heisenews> will mehr über seine Benutzer erfahren, <heisenews=90142>Microsoft</heisenews> ebenfalls ...
usw. Und das wird draus:
Zitat:
[heisenews=90069>Google</heisenews> will mehr über seine Benutzer erfahren, <heisenews=90142]Microsoft[/heisenews] ebenfalls ...
Die PHP-Version erkennt, dass es sich um zwei Suchtags handelt, die CSharp-Version nicht.




Edit: So geht es (?)
Code:
@"&lt;((?<tag>{0})(=(.*?))?)&gt;(.*?)&lt;\/(\k<tag>)&gt;"
Wieso auch immer. Ich bin gerade im Linux und klicke mich durch meine Beiträge durch. Aber der oben zitierte wird völlig korrekt angezeigt. Hm...
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#24

Re: [PHP] Regulärer Ausdruck zum Filtern eines Hyperlinks

  Alt 27. Okt 2007, 13:32
Huppsala, hab es nur mit deinem Beispielproblem ohne Attribute getestet. Im Attributsteil ist ja noch einmal ein greedy Stern, der dann alles bis zum allerletzten ">blablabl</tag>" frisst. Also zwei *?:
Code:
&lt;(?<tag>suchmaschine)(=.*?)?&gt;(.*?)&lt;/(\k<tag>)&gt;
Matcht
Code:
&lt;suchmaschine&gt;Suchbegriff(e)&lt;/suchmaschine&gt;
&lt;suchmaschine=Suchbegriff(e)&gt;Text für Beitrag&lt;/suchmaschine&gt;
&lt;suchmaschine&gt;Suchbegriff(e)&lt;/suchmaschine&gt;
jedenfalls anstandslos. Und entspricht ja dann auch fast deiner Version .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 02:29 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