Alt 30.09.2011, 20:25:47   #1 (permalink)
TDS
Webbie u. Progger
Benutzerbild von TDS

ID: 36770
Lose-Remote

TDS eine Nachricht über ICQ schicken TDS eine Nachricht über AIM schicken TDS eine Nachricht über Skype™ schicken
Reg: 25.04.2006
Beiträge: 1.420
TDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter Mensch
Standard Regex für valide W3C Links (& zu &)

Hallo,

laut W3C sollten ja alle URLs mit Attributen & und nicht & als Trenner benutzen. Nur leider ist das rückwirkend auf sehr große Projekte nachträglich nicht machbar alles manuell zu ersetzen.

Was ich bis jetzt habe ist folgendes:
  • alle URLs suchen die als Attribute src oder href haben
    Code:
    1:
    (src|href)\s*=\s*[\"|'](.*?)[\"|']
  • durchsuche diese URLs ob nur & als Trenner und nicht & (inkl. XML-Syntax falls vorhanden => UTF-Nummer)
    Code:
    1:
    (&(?!(?i:\#((x([\dA-F]){1,5})|(104857[0-5]|10485[0-6]\d|1048[0-4]\d\d|104[0-7]\d{3}|10[0-3]\d{4}|0?\d{1,6}))|([A-Za-z\d.]{2,31}));))
Die Frage ist: Kann man diese zwei Regex zusammenfassen so das unsere Entwicklungsumgebung (bzw. der Dateimanager) via Regex-Suche alles für uns findet?

Gruß TDS

Werde mein Ref und erhalte 500.000 Lose. PN an mich
TDS ist offline   Mit Zitat antworten
Gesponsorte Links
Alt 30.09.2011, 20:45:48   #2 (permalink)
Erfahrener Benutzer

ID: 129556
Lose-Remote

Reg: 28.02.2010
Beiträge: 439
tobomator tobomator tobomator tobomator tobomator tobomator
Standard

in einer Unix/Linux Umgebung kann man da schnell mit egrep und sed arbeiten.
Das sehr zuverlässig und schnell, egal wie groß Dateien sind, und wieviele !!!
tobomator ist offline   Mit Zitat antworten
Alt 30.09.2011, 20:51:33   #3 (permalink)
TDS
Webbie u. Progger
Benutzerbild von TDS

ID: 36770
Lose-Remote

TDS eine Nachricht über ICQ schicken TDS eine Nachricht über AIM schicken TDS eine Nachricht über Skype™ schicken
Reg: 25.04.2006
Beiträge: 1.420
TDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter Mensch
Standard

Zitat:
Zitat von tobomator Beitrag anzeigen
in einer Unix/Linux Umgebung kann man da schnell mit egrep und sed arbeiten.
Das sehr zuverlässig und schnell, egal wie groß Dateien sind, und wieviele !!!
Das sollte nicht das Problem darstellen. Würde wenn dann sed oder nen Shellscript bevorzugen. Idee? (Grundlage ist Debian)

Werde mein Ref und erhalte 500.000 Lose. PN an mich
TDS ist offline Threadstarter   Mit Zitat antworten
Alt 30.09.2011, 20:56:19   #4 (permalink)
Erfahrener Benutzer

ID: 129556
Lose-Remote

Reg: 28.02.2010
Beiträge: 439
tobomator tobomator tobomator tobomator tobomator tobomator
Standard

nen shell Skript geht ja immer sogar mit rekursion.
Solltest Dich ein wenig belesen, nicht einfach nur nach einer fertigen Lösung fragen.
sed hat auch RA Erkennung mit gleichzeitiger Ersetzung des Matches !

Ansonsten beschreib einfach mal, warum es nicht sequenziell laufen soll, so wie atm...
tobomator ist offline   Mit Zitat antworten
Alt 01.10.2011, 05:47:04   #5 (permalink)
ist maskulin
Benutzerbild von DasGuru

ID: 420909
Lose-Remote
Gesperrt

DasGuru eine Nachricht über ICQ schicken DasGuru eine Nachricht über Skype™ schicken
Reg: 16.08.2008
Beiträge: 1.899
DasGuru kann auf vieles stolz seinDasGuru kann auf vieles stolz seinDasGuru kann auf vieles stolz seinDasGuru kann auf vieles stolz seinDasGuru kann auf vieles stolz seinDasGuru kann auf vieles stolz seinDasGuru kann auf vieles stolz seinDasGuru kann auf vieles stolz seinDasGuru kann auf vieles stolz sein
Standard

aus deinem Posting entnehme ich mal, das die php-Funktion htmlentities() ebenso ausreichend sein sollte
Wäre, falls es bei dir möglich ist, die einfachste Variante.
Do not argue with an idiot. He will drag you down to his level and beat you with experience
99%Refback für alle
| Novoline-Spiele | ich zahle meine Schulden |
3 mio Lose + Aktivitätsboni bei eBesucher
| eSig



DasGuru ist offline   Mit Zitat antworten
Alt 01.10.2011, 05:53:27   #6 (permalink)
Erfahrener Benutzer

ID: 129556
Lose-Remote

Reg: 28.02.2010
Beiträge: 439
tobomator tobomator tobomator tobomator tobomator tobomator
Standard

Zitat:
Zitat von DasGuru Beitrag anzeigen
aus deinem Posting entnehme ich mal, das die php-Funktion htmlentities() ebenso ausreichend sein sollte
Wäre, falls es bei dir möglich ist, die einfachste Variante.
Schade - ich dachte, er wird sich mal mit was Neuem beschäftigen...
Naja warum umständlich, wenns auch einfach geht
tobomator ist offline   Mit Zitat antworten
Alt 01.10.2011, 05:58:11   #7 (permalink)
ist maskulin
Benutzerbild von DasGuru

ID: 420909
Lose-Remote
Gesperrt

DasGuru eine Nachricht über ICQ schicken DasGuru eine Nachricht über Skype™ schicken
Reg: 16.08.2008
Beiträge: 1.899
DasGuru kann auf vieles stolz seinDasGuru kann auf vieles stolz seinDasGuru kann auf vieles stolz seinDasGuru kann auf vieles stolz seinDasGuru kann auf vieles stolz seinDasGuru kann auf vieles stolz seinDasGuru kann auf vieles stolz seinDasGuru kann auf vieles stolz seinDasGuru kann auf vieles stolz sein
Standard

Ich habe eigentlich schon gezweifelt, ob wir nicht aneinander vorbei reden.

Achja, auch wenn ich deinen Einwand "mit etwas Neuem beschäftigen" gut finde ist es wirklich unnötig und in anderen PHP-Versionen evtl. unkompatibel, wenn man sowas über regex, shellscript auf das gesamte Script anwenden will.

Oder reden wir doch aneinander vorbei ?
Do not argue with an idiot. He will drag you down to his level and beat you with experience
99%Refback für alle
| Novoline-Spiele | ich zahle meine Schulden |
3 mio Lose + Aktivitätsboni bei eBesucher
| eSig



DasGuru ist offline   Mit Zitat antworten
Alt 01.10.2011, 06:24:28   #8 (permalink)
Erfahrener Benutzer

ID: 129556
Lose-Remote

Reg: 28.02.2010
Beiträge: 439
tobomator tobomator tobomator tobomator tobomator tobomator
Standard

also wenn du mit sed noch keine Erfahrung gesammelt hast, würde ich auch Dir mal das Studieren der Man Page von sed, oder ein paar Tut's auszuprobieren, empfehlen. Vor allem wenn man sein Shell Skript so baut, das man den RA austauschen kann, sei es der RA ist in einer Variablen gespeichert, oder wird aus $1 (Paramterübergabe) ausgelesen und benutzt. Setzt voraus, das der RA auch korrekt ist...

Schon klar, so einfach wie möglich spart Zeit, aber Neues dazulernen sollte man immer, oder seinen Horizont erweitern.
Ich war selbst überrascht, wie effektiv sed sein kann.
Mit einem 1zeiler kann man soviel machen...
tobomator ist offline   Mit Zitat antworten
Alt 01.10.2011, 10:34:11   #9 (permalink)
TDS
Webbie u. Progger
Benutzerbild von TDS

ID: 36770
Lose-Remote

TDS eine Nachricht über ICQ schicken TDS eine Nachricht über AIM schicken TDS eine Nachricht über Skype™ schicken
Reg: 25.04.2006
Beiträge: 1.420
TDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter Mensch
Standard

Zitat:
Zitat von DasGuru Beitrag anzeigen
aus deinem Posting entnehme ich mal, das die php-Funktion htmlentities() ebenso ausreichend sein sollte
Wäre, falls es bei dir möglich ist, die einfachste Variante.
Klappt nicht. Beispiel: ca. 4.000 Dateien, davon 2.500 PHP und ca. 500 XML. Wenn ich dann nen Link mit dem oben genannten Regex finde, und htmlentities / htmlspecialchars / urlencode, etc mache, dann wird auch & ersetzt was zu & führt.
Zitat:
Zitat von DasGuru Beitrag anzeigen
Ich habe eigentlich schon gezweifelt, ob wir nicht aneinander vorbei reden.

Achja, auch wenn ich deinen Einwand "mit etwas Neuem beschäftigen" gut finde ist es wirklich unnötig und in anderen PHP-Versionen evtl. unkompatibel, wenn man sowas über regex, shellscript auf das gesamte Script anwenden will.

Oder reden wir doch aneinander vorbei ?
Finde auch es sollte normales POSIX-Regex sein (oder PCRE). So brauche ich weder Shell noch ein extra Script. Dann kann ich auch wie oben beschrieben mit externen Programmen suchen.

Werde mein Ref und erhalte 500.000 Lose. PN an mich
TDS ist offline Threadstarter   Mit Zitat antworten
Alt 01.10.2011, 10:56:53   #10 (permalink)
Erfahrener Benutzer

ID: 129556
Lose-Remote

Reg: 28.02.2010
Beiträge: 439
tobomator tobomator tobomator tobomator tobomator tobomator
Standard

Wenn aus & & wird ist am regulären ausdruck was faul.
Das heißt, du mußt auf die Möglichkeit eines &amp suchen, nicht nur allein eines &.
Das heißt sowieso Du mußt splitten.

1> Suchedas nächste Vorkommen von und
2> prüfe ob &amp -> nein: dann &amp , sonst nix

Warum macht man es sich nur immer so unnötig schwer...
tobomator ist offline   Mit Zitat antworten
Alt 02.10.2011, 19:42:48   #11 (permalink)
TDS
Webbie u. Progger
Benutzerbild von TDS

ID: 36770
Lose-Remote

TDS eine Nachricht über ICQ schicken TDS eine Nachricht über AIM schicken TDS eine Nachricht über Skype™ schicken
Reg: 25.04.2006
Beiträge: 1.420
TDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter MenschTDS ist ein sehr geschätzter Mensch
Standard

Zitat:
Zitat von tobomator Beitrag anzeigen
Wenn aus & & wird ist am regulären ausdruck was faul.
Das heißt, du mußt auf die Möglichkeit eines &amp suchen, nicht nur allein eines &.
Das heißt sowieso Du mußt splitten.

1> Suchedas nächste Vorkommen von und
2> prüfe ob &amp -> nein: dann &amp , sonst nix

Warum macht man es sich nur immer so unnötig schwer...
Ähm, hast du mal meinen Post gelesen???
Code:
1:
(&(?!(?i:\#((x([\dA-F]){1,5})|(104857[0-5]|10485[0-6]\d|1048[0-4]\d\d|104[0-7]\d{3}|10[0-3]\d{4}|0?\d{1,6}))|([A-Za-z\d.]{2,31}));))
Dieser Regex macht genau das erwartete. & zu & wenn nicht schon & oder ein &#ZAHL;-Derivat gewesen.

Werde mein Ref und erhalte 500.000 Lose. PN an mich
TDS ist offline Threadstarter   Mit Zitat antworten
Antwort

Gesponsorte Links

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Java] Regex: Wortsuche WhiZZler Programmierung 3 25.07.2011 20:53:06
[JavaScript] RegEx Frage Elbo Programmierung 16 02.09.2009 11:35:20
[Gelöst][REGEX/PHP] Regex für "BB-Tags" Sebmaster Programmierung 2 07.04.2009 12:00:02
[Regex] Problem chrissel Programmierung 5 01.12.2006 23:44:50
Frage zu Links/REF user links quest etc. Chriger Ich bin neu hier und habe eine Frage! 2 20.11.2006 16:53:42


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19:17 Uhr.