php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack (1) Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  1 links from elsewhere to this Post. Click to view. #1 (permalink)  
Alt 27-03-2008, 12:33
stekoe2000
 Registrierter Benutzer
Links : Onlinestatus : stekoe2000 ist offline
Registriert seit: Jul 2003
Beiträge: 342
stekoe2000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard [REGEX] img src="" filtern

Hallo!

Ich bin gerade auf dem Pfar der Regular Expressions und komme nicht weiter. Ich will meine ganze Seite auf <img src="" /> Tags überprüfen um nicht verwendete Bilder zu finden. (Erst die verwendeten und dann werden alle aus dem images Ordner rausgeschmissen, die nicht verwendet werden).

Dazu dachte ich mir, nehme ich RegExp und habe herumprobiert und bin soweit, dass ich folgende RegExp habe:

'@<img src="(.*)"(.*?)>@is'

http://www.regex-tester.de/uc_305_de.html

Leider schiesst das Dingen übers Ziel hinaus, weil er am ende des <img src="" /> nicht aufhört. Warum, weiß ich nicht, und da ich mir schon viele Tutorials dazu durchgelesen habe und mehrere RegExp Tester benutzt habe aber mein Ergebnis nicht das ist, was ich brauche, wollte ich die breite Masse fragen, was ich falsch gemacht habe...

/EDIT:

... '/<img[^>]+>/is' ... entschuldigung, gerade eben gefunden ...
__________________
Liebe Grüße,
SteKoe!

PHP Tutorials
Peter Kropff | Quakenet | Schattenbaum.net

Geändert von stekoe2000 (27-03-2008 um 12:36 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 27-03-2008, 12:46
$_Baker
 Member
Links : Onlinestatus : $_Baker ist offline
Registriert seit: Feb 2008
Beiträge: 220
$_Baker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wo kein / ist, kann auch kein / gematched werden.
Mit Zitat antworten
  #3 (permalink)  
Alt 27-03-2008, 12:47
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Schonmal mit Schalter U für Ungreedy probiert?
Code:
'@<img src="(.*)"(.*)>@isU'
Weil dein .* ohne ungreedy matched einfach alles bis zum Ende des Strings. Ohne ungreedy probiert der RegExp gar nicht aus ob " vorkommt, sondern matched es aufgrund von .*

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #4 (permalink)  
Alt 27-03-2008, 12:49
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Wo kein / ist, kann auch kein / gematched werden.
Wo siehst du / als Zeichen? Der / in einem RegExp ist ein Begrenzer, hat also eine spezielle Funktion. Wenn du / als Zeichen finden willst musst du ihn innerhalb des Musters escapen \/
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #5 (permalink)  
Alt 27-03-2008, 13:22
stekoe2000
 Registrierter Benutzer
Links : Onlinestatus : stekoe2000 ist offline
Registriert seit: Jul 2003
Beiträge: 342
stekoe2000 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke für die Antworten, wie oben geschrieben erfüllt diese RegExp: '/<img[^>]+>/is' was ich will.

Den Schalter U hatte ich versucht, hatte leider auch nichts gebracht.
__________________
Liebe Grüße,
SteKoe!

PHP Tutorials
Peter Kropff | Quakenet | Schattenbaum.net
Mit Zitat antworten
  #6 (permalink)  
Alt 27-03-2008, 14:01
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wenn es nicht gefunzt hat, dann hast du was falsch gemacht. Ich vermute mal dass dann dein RegExp so ausgeschaut hat
Code:
'@<img src="(.*)"(.*?)>@isU'
Und wenn dem so ist dann brauchst du dich nicht wundern. Denn mit dem ? zusammen mit U wird der Ausdruck wieder greedy
Der Ausdruck funzt schon wie du hier sehen kannst

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #7 (permalink)  
Alt 27-03-2008, 14:20
$_Baker
 Member
Links : Onlinestatus : $_Baker ist offline
Registriert seit: Feb 2008
Beiträge: 220
$_Baker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von jahlives
Wo siehst du / als Zeichen? Der / in einem RegExp ist ein Begrenzer, hat also eine spezielle Funktion. Wenn du / als Zeichen finden willst musst du ihn innerhalb des Musters escapen \/
Zitat:
Als Delimiter kann quasi jedes nicht-alphanumerische Zeichen außer dem Backslash verwendet werden
Ausserdem hab ich mich auf das /> des img-Tags bezogen
Mit Zitat antworten
  #8 (permalink)  
Alt 27-03-2008, 14:38
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von $_Baker
Als Delimiter kann quasi jedes nicht-alphanumerische Zeichen außer dem Backslash verwendet werden
Und wo siehst du einen Backslash?
Zitat:
Original geschrieben von $_Baker
Ausserdem hab ich mich auf das /> des img-Tags bezogen
Das ist eine faule Ausrede, da dieser Slash gar nirgends abgefragt wird.
__________________
Gruss
H2O
Mit Zitat antworten
  #9 (permalink)  
Alt 27-03-2008, 14:38
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Ausserdem hab ich mich auf das /> des img-Tags bezogen
Und erklärst du mir den Grund warum / nicht von .* gematched werden würde.
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #10 (permalink)  
Alt 27-03-2008, 14:41
$_Baker
 Member
Links : Onlinestatus : $_Baker ist offline
Registriert seit: Feb 2008
Beiträge: 220
$_Baker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

OffTopic:
Ich seh schon, es is nich gut, in einem geistig unwachen Zustand etwas sinnvolles Posten zu wollen


Bevor sich einige angegriffen Fühlen, lass ich das mal lieber
Mit Zitat antworten
  #11 (permalink)  
Alt 28-03-2008, 13:45
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Das Problem ist eigentlich ganz Simpel... und du warst auch schon nahe an der Lösung...

'@<img src="(.*? )"(.*?)>@is'
http://www.regex-tester.de/uc_312_de.html
Mit Zitat antworten
  #12 (permalink)  
Alt 28-03-2008, 14:24
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@jmc
Oder einfach U hintendran. Das würde dir dann in diesem Fall 1 Zeichen einsparen
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #13 (permalink)  
Alt 20-06-2009, 19:20
Samson
 Registrierter Benutzer
Links : Onlinestatus : Samson ist offline
Registriert seit: Nov 2001
Beiträge: 2
Samson ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich hätte gern noch ein Regex für den Fall, das der src-Parameter nicht unmittelbar nach dem Beginn des img-Tags folgt.

Ich habe ein ähnliches Problem wie der Ur-Autor stekoe2000, wo ich in einem Verzeichnis im HTML-Code der Dateien die referenzierten Grafiken finden muß. Beschränke ich die Suche auf den src-Parameter, habe ich nicht nur Grafiken in der Ergebnisliste.

Das bisherige Regex
PHP-Code:
@<img src="(.*?)".*?>@is 
findet also z.B. nicht
PHP-Code:
<img width="252" height="49" border="0" align="middle" 
src="/news/data/images/4von6.jpg" alt="4von6.jpg" title="4von6.jpg" /> 
Ergänzung. Ich hab's woanders gefunden:
PHP-Code:
@<img.*?src="(.*?)".*?>@is 

Geändert von Samson (20-06-2009 um 19:52 Uhr) Grund: Erledigt
Mit Zitat antworten
  #14 (permalink)  
Alt 26-03-2010, 13:33
syntaxerror
 Registrierter Benutzer
Links : Onlinestatus : syntaxerror ist offline
Registriert seit: Mar 2010
Beiträge: 31
syntaxerror befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von jahlives Beitrag anzeigen
@jmc
Oder einfach U hintendran. Das würde dir dann in diesem Fall 1 Zeichen einsparen
Ich mag das U nicht. Meine Regex teste ich auch gerne im UltraEdit (Regex-Engine: PERL in den erweiterten Einstellungen; die UE-eigene Engine ist viel zu unflexibel und umständlich), da geht das ganz ohne Webseiten...
File->New, Quellcode reinpfeffern und Regex drüberlaufen lassen.
Wenn ich dann solche exotischen Sachen wie 'U' verwende, müsste ich die Regex für anderweitige Verwendung immer wieder umschreiben.
Mit der '?'-Verwendung "spare" ich zwar nicht an jedem Zeichen ein, bin aber mehrfach kompatibel; könnte das dann sogar in Windows@Cygwin über Perl testen lassen. Ohne nochmal dran rumfummeln zu müssen.

Fazit: Diese Agonie um das Einsparen von einzelnen Zeichen ist oft nicht wirklich sinnvoll...

Geändert von syntaxerror (26-03-2010 um 13:36 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 26-03-2010, 20:04
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Aha, schön zu wissen... Aber der Thread ist fast ein Jahr alt.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
Antwort

Lesezeichen


LinkBacks (?)
LinkBack to this Thread: https://www.php-resource.de/forum/php-developer-forum/91058-regex-img-src-filtern.html
Erstellt von For Type Datum
Metacrawler - Die Metasuchmaschine. This thread Refback 26-07-2012 18:55

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:42 Uhr.