Einzelnen Beitrag anzeigen

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