Optionaler Whitespace Regex
Ich habe ein problem versucht, zu ignorieren whitespace zwischen bestimmten Zeichen. Ich habe schon Googeln um für ein paar Tage und kann nicht scheinen, um die Lösung zu finden.
Hier ist mein code:
//Get Image data
preg_match('#<a href="(.*?)" title="(.*?)"><img alt="(.*?)" src="(.*?)"[\s*]width="150"[\s*]height="(.*?)"></a>#', $data, $imagematch);
$image = $imagematch[4];
Grundsätzlich dies sind einige der Szenarien, die ich habe:
<a href="/wiki/File:Sky1.png" title="File:Sky1.png"><img alt="Sky1.png" src="http://media-mcw.cursecdn.com/thumb/5/56/Sky1.png/150px-Sky1.png"width="150" height="84"></a>
(Man beachte das fehlende Leerzeichen zwischen " Breite="" src="")
Und
<a href="/wiki/File:TallGrass.gif" title="File:TallGrass.gif"><img alt="TallGrass.gif" src="http://media-mcw.cursecdn.com/3/34/TallGrass.gif" width="150"height="150"></a>
(Man beachte das fehlende Leerzeichen zwischen width="" und height="".)
Ist es irgendwie ignorieren Sie die Leerzeichen zwischen den Zeichen? Als ich bin kein Regex-Experte.
InformationsquelleAutor der Frage jameslfc19 | 2013-01-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen
\s?
wenn ein Raum verwendet werden darf.\s steht für Leerzeichen
? sagt das vorhergehende Zeichen einmal vorkommen darf oder nicht auftreten.
Wenn mehr als ein Leerzeichen sind erlaubt und optional ist, verwenden Sie
\s*
.* sagt vorstehenden Zeichen können auftreten, null oder mehrere Male.
ermöglicht eine optionale Leerzeichen zwischen Attributnamen und =.
Wenn Sie wollen, ein optionales Leerzeichen nach dem
=
auch, fügen Sie ein\s?
nachdem er auch.Ebenfalls, wo Sie optionale Zeichen, die Sie verwenden können
?
wenn die maximale vorkommen 1 oder*
wenn das maximale Ereignis ist unbegrenzt, nach der Fakultative Charakter.Und Ihre tatsächliche problem war
[\s*]
wodurch das auftreten von ein Leerzeichen oder a * als Zeichen eingeschlossen in[
und]
ist ein Charakter-Klasse. Eine Charakter-Klasse ermöglicht den Eintritt eines seiner Mitglieder einmal (so entfernen Sie*
) und wenn Sie fügen einen Quantifizierer (?
+
*
etc) nach der]
beliebige(s) Zeichen in der Zeichenklasse kann auftreten, nach der Quantifizierer.InformationsquelleAutor der Antwort Naveed S