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 2 von 3     12 3      
MathiasSimmack
(Gast)

n/a Beiträge
 
#11

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

  Alt 28. Jan 2007, 18:33
Ähnliche Frage, darum möchte ich ungern einen neuen Beitrag schreiben. Wenn ich jetzt mehrere Links oder andere HTML-Elemente filtern möchte, dann klappt das wunderbar, solange sich die Elemente nicht wiederholen. Dieses Beispiel:
Code:
[url="bla"]Huhu[/url] <div>Was auch immer</div>
könnte ich quasi "zerlegen", wenn ich nach "a" und "div" filtere. Kommt am Schluss aber noch ein "a" dazu
Code:
[url="bla"]Huhu[/url] <div>Was auch immer</div> <a>ding</a>
dazu, dann findet mein Ausdruck leider nur noch den kompletten String vom ersten <a bis zum letzten a>. Kann ich das irgendwie vermeiden, so dass nur die einzelnen Elemente gefunden werden?

Ich habe vergessen zu erwähnen, dass die Elemente nach bestimmten Namen gefiltert werden. Eine allgemeine Anfrage, die nur nach der HTML-Syntax geht, reicht hier nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#12

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

  Alt 28. Jan 2007, 18:41
klar...
Code:
<[^>]*?>(.*?)<\/[^>].*?>
sollte alle elemente einzeln filtern... bei nested tags wird das ganze allerdings nicht mehr hinhauen, also sowas wie
Code:
<div><div></div></div>
aber das war ja nicht das problem oder?
alle links bekommst du mit
Code:
<a[^>]*?>(.*?)<\/a>
edit: ich verstehe dein edit nicht ganz

  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#13

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

  Alt 28. Jan 2007, 19:27
Mein Edit bedeutet, dass ich eben nicht pauschal nach allen HTML-Tags suchen kann/will, sondern es werden nur bestimmte gebraucht. Der erste reguläre Ausdruck ist also nicht das, was ich suche.

Und ich habe im Moment das Problem mit "nested tags", auch wenn es nicht mal die selben sind. Wie gesagt:
Code:
<a>ding</a> <h1>dong</h1> <a>blupp</a>
findet bei mir momentan noch den kompletten String, weil er ja mit einem <a>-Tag anfängt und auch aufhört. Der reguläre Ausdruck soll also die drei einzelnen Elemente erkennen. Das ist mein Problem.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#14

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

  Alt 28. Jan 2007, 19:29
Schalte mal über den Parameter U auf nicht gierig um.

Gruss
Thorsten
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#15

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

  Alt 28. Jan 2007, 19:33
Habe ich schon. Es spielt doch keine Rolle, dass es sich um "konvertierte" HTML-Tags handelt? Also die spitze Klammer < ist im Code &lt;. Ich meine, ob ich nun die spitze Klammer angebe oder den konvertierten String sollte doch unerheblich sein.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#16

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

  Alt 28. Jan 2007, 19:37
Zitat von MathiasSimmack:
Habe ich schon. Es spielt doch keine Rolle, dass es sich um "konvertierte" HTML-Tags handelt? Also die spitze Klammer < ist im Code &lt;. Ich meine, ob ich nun die spitze Klammer angebe oder den konvertierten String sollte doch unerheblich sein.
Also das was du immer so als Beispiel postest sind KEINE nested tags! damit sollte die RegEx die ich mit a als Beipsiel gepostet habe funktionieren, du musst dann nur eben das a mit h1, h2 h3 oder was für Tags du eben matchen willst, ersetzen!

  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#17

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

  Alt 28. Jan 2007, 19:37
Mache ich es so, würde es gehen:
Code:
<a[^>]*?>(.[color=red][^<][/color]*[color=red][^<][/color]?)<\/a>
Ich möchte ja nicht, dass zwischen den Tags noch mal eine spitze Klammer aufgeht. Von daher dachte ich an obige Lösung. Gut so? Bessere Ideen?
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#18

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

  Alt 28. Jan 2007, 19:41
Hallo,

Code:
preg_match_all(
  '/<(.*)>(.*)<\/(.*)>/U',
  '<a>ding</a> <h1>dong</h1> <a>blupp</a>',
  $match
);
liefert bei mir folgendes...
Code:
Array
(
    [0] => Array
        (
            [0] => <a>ding</a>
            [1] => <h1>dong</h1>
            [2] => <a>blupp</a>
        )

    [1] => Array
        (
            [0] => a
            [1] => h1
            [2] => a
        )

    [2] => Array
        (
            [0] => ding
            [1] => dong
            [2] => blupp
        )

    [3] => Array
        (
            [0] => a
            [1] => h1
            [2] => a
        )

)

Gruss
Thorsten
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#19

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

  Alt 28. Jan 2007, 21:01
Hm, ich will nicht ausschließen, dass ich irgendwo einen Fehler gemacht habe. Ich stehe mit den regulären Ausdrücken ein wenig auf Kriegsfuß. Egal. Zurzeit ist mein WordPress-Plugin fertig. Ich denke zwar, dass es so was schon geben wird, aber ich wollte es mal selbst programmieren: eine Suchfunktion für fremde Seiten. Ähnlich wie das [dp]-Suchtag, sozusagen. Bisher laufen <google>, <heise> und <wikipedia>. Die werden direkt im Texteditor eingegeben und müssen dann natürlich als &lt;google&gt; usw. geparst.

Ich werde morgen lokal (auf meinem Ubuntu) mal einen ausgedehnten Bug-Versuch starten und diverse Suchtags nacheinander auflisten und gucken, ob es irgendwann in irgendeiner Kombination ein Problem gibt.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#20

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

  Alt 29. Jan 2007, 20:23
Ich hab's gewusst. In meiner Anfrage
Code:
"#&lt;".$searchEngines[$i]["name"]."(=(.*?))?&gt;(.*[^&lt;*]?)&lt;\/".$searchEngines[$i]["name"]."&gt;#Usi"
war noch ein Fehler. So klappten zwar die Einzelaufrufe à la
Code:
<heise>Vista</heise> <google>Delphi</google> <heise>Counterstrike</heise>
ohne Probleme, aber sobald ich die erweiterte Syntax nutzen wollte
Code:
<heise=MacOS>Vista</heise> <google>Test</google> <heise>WordPress</heise>
hat er die zwei <heise>-Tags zusammengefasst. Jetzt habe ich in der Anfrage das Fragezeichen weggelassen:
Code:
"#&lt;".$searchEngines[$i]["name"]."(=(.*[color=red][b][s]?[/s][/b][/color]))?&gt;(.*[^&lt;*]?)&lt;\/".$searchEngines[$i]["name"]."&gt;#Usi"
und siehe da, jetzt klappt es. Augenscheinlich.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 01:11 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