brauche Webseite ideal für Vereine und Firmen
- Ad -
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! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #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.283
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.283
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.283
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.283
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.283
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.188
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


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

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

EM 2012 Tipp-Spiel ansehen EM 2012 Tipp-Spiel

Online Tipp-Spiel zur Fussball Europameisterschaft 2012, basierend auf php-Script mit hinterlegter mySql-Datenbank

27.05.2012 tippimnetz | Kategorie: PHP/ Spiele
Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:07 Uhr.