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 1 von 3  1 23      
MathiasSimmack
(Gast)

n/a Beiträge
 
#1

[PHP] Regulärer Ausdruck zum Filtern eines Hyperlinks

  Alt 15. Jan 2007, 09:36
Hallo. Folgende Situation: ich habe einen Text mit Autoren- und URL-Infos, der wie folgt aussieht
Zitat:
Das aktuelle Thema ist %style% %version% von %author%
Ja, ist von K2, dem WordPress-Thema. Es gibt eine Funktion, die daraus den passenden Text macht, der dann im Footer angezeigt wird. Jetzt möchte ich aber den Hyperlink zum Stylesheet entfernen, wenn als URL "NA" (not available) angegeben wird. Da man den Text auch beliebig umstellen könnte, sind die einzigen Konstanten also das <a>-Tag samt Inhalt, und das "href"-Attribut.

Wie müsste der reguläre Ausdruck zum Filtern aussehen? Sicher irgendwie
Code:
/\<a ??? href=\"NA\" ???\>(.*?)\<\/a\>/
Den Inhalt des <a>-Tags habe ich als (.*?) angegeben, damit ich ihn später für die Konvertierung nutzen kann (aus dem Link soll ein simples <span>Inhalt</span> werden). Bessere Ideen sind gern willkommen.

Und die Fragezeichen sind mein eigentliches Problem. Sie stehen für die Leerzeichen oder anderen Attribute, die sich vor und/oder hinter dem "href"-Attribut befinden könnten. Hat da jemand eine Idee?
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

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

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

  Alt 15. Jan 2007, 14:54
Moin,

ich würde es so machen:
Code:
/<a [^>]*?href=["\'].*?["\'][^>]*?>(.*?)<\/a>/
edit: mit dem fixen NA dann so:
Code:
/<a [^>]*?href=["\']NA["\'][^>]*?>(.*?)<\/a>/
  Mit Zitat antworten Zitat
annonyme

Registriert seit: 1. Sep 2004
Ort: Lübeck
35 Beiträge
 
#3

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

  Alt 15. Jan 2007, 14:58
Zitat von MathiasSimmack:

Wie müsste der reguläre Ausdruck zum Filtern aussehen? Sicher irgendwie
Code:
/\<a ??? href=\"NA\" ???\>(.*?)\<\/a\>/
Den Inhalt des <a>-Tags habe ich als (.*?) angegeben, damit ich ihn später für die Konvertierung nutzen kann (aus dem Link soll ein simples <span>Inhalt</span> werden). Bessere Ideen sind gern willkommen.

Und die Fragezeichen sind mein eigentliches Problem. Sie stehen für die Leerzeichen oder anderen Attribute, die sich vor und/oder hinter dem "href"-Attribut befinden könnten. Hat da jemand eine Idee?
Code:
/\<a.+href=\"NA\".*\>(.*)\<\/a\>/Ui
wäre meine idee dazu.....
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

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

  Alt 16. Jan 2007, 01:12
Ich bin etwas verwirrt. Die Ausdrücke scheinen zu stimmen. Wenn ich einen Hyperlink als String fake, dann klappt es. Aber meine Vorgabe klappt irgendwie nicht? Was könnte die Ursache sein? Zeichensatz? Andere Probleme? Wenn ich mit "htmlspecialchars" den String im Browser anzeigen lasse, sehe ich nichts ungewöhnliches.
  Mit Zitat antworten Zitat
annonyme

Registriert seit: 1. Sep 2004
Ort: Lübeck
35 Beiträge
 
#5

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

  Alt 16. Jan 2007, 13:12
Zitat von MathiasSimmack:
Ich bin etwas verwirrt. Die Ausdrücke scheinen zu stimmen. Wenn ich einen Hyperlink als String fake, dann klappt es. Aber meine Vorgabe klappt irgendwie nicht? Was könnte die Ursache sein? Zeichensatz? Andere Probleme? Wenn ich mit "htmlspecialchars" den String im Browser anzeigen lasse, sehe ich nichts ungewöhnliches.
wie sieht der String, den du reintust, genau aus?
  Mit Zitat antworten Zitat
16. Jan 2007, 18:55
Dieses Thema wurde von "r_kerber" von "Klatsch und Tratsch" nach "Internet / LAN / ASP.NET" verschoben.
Ich denke das ist dort besser aufgehoben.
16. Jan 2007, 19:05
Dieses Thema wurde von "Christian Seehase" von "Internet / LAN / ASP.NET" nach "Programmieren allgemein" verschoben.
Kein Delphi-Thema
MathiasSimmack
(Gast)

n/a Beiträge
 
#8

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

  Alt 17. Jan 2007, 19:36
Wie in der o.g. Vorlage. Die Platzhalter, etwa %author%, werden durch K2 durch die entsprechenden Angaben ersetzt. So wird bspw. ein
Zitat:
Das aktuelle Thema ist Mein Thema 1.0 von Mathias Simmack.
draus. Oder im HTML-Code wie erwartet:
Zitat:
Das aktuelle Thema ist Mein Thema 1.0 von Mathias Simmack.
Wie gesagt, nichts ungewöhnliches.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

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

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

  Alt 17. Jan 2007, 21:10
Also wenn ich das teste funktioniert es mit meiner o.g. Expression. Ich tippe eher auf einen Fehler im System. Vielleicht sind die Links zu dem Zeitpunkt, zu dem du matchen willst noch garnicht generiert?
Oder ein Fehler im PHP-Code? Dass es an der Ausgabe an sich liegt kann ich mir kaum vorstellen...

  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#10

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

  Alt 17. Jan 2007, 21:38
Da liegst du nicht falsch. Wie gesagt, mit einem Fake-String funktionierte es ja auch. Ich bin der Ursache auf die Spur gekommen. Ich hatte angenommen, K2 würde den String dynamisch erzeugen. Aber Nein, er wird in der Datenbank gespeichert und sieht im Dump so aus
Zitat:
'Das aktuelle Thema ist <a href=\\"NA\\" title=\\"Blablabla von Mathias Simmack\\">Blablabla 1.0</a> von <a href=\\"Homepage-URL\\">Mathias Simmack</a>.
'
War mein (Denk)Fehler, denn die Originalfunktion lautet einfach nur:
Code:
$style_info = get_option('k2styleinfo');
echo stripslashes($style_info);
Ich habe jetzt erst das "stripslashes" drüber gejagt und dann erfolgreich per "preg_replace" den, in dem Fall unerwünschten Hyperlink entfernt:
Code:
$style_info = get_option('k2styleinfo');
$style_info = stripslashes($style_info);

$pattern = '/<a [^>]*?href=["\']NA["\'][^>]*?>(.*?)<\/a>/';
$afterPattern = "<span style=\"font-weight:bold\">\\1</span>";
$style_info = preg_replace($pattern, $afterPattern, $style_info);

echo "$style_info";
Voilà, Problem gelöst.

Danke.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:44 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