Sto riscontrando un problema nel tentativo di ignorare gli spazi bianchi tra determinati caratteri. Sono stato su Google per un paio di giorni e non riesco a trovare la soluzione.Spazio bianco opzionale Regex
Ecco il mio codice:
// Get Image data
preg_match('#<a href="(.*?)" title="(.*?)"><img alt="(.*?)" src="(.*?)"[\s*]width="150"[\s*]height="(.*?)"></a>#', $data, $imagematch);
$image = $imagematch[4];
Fondamentalmente questi sono alcuni degli scenari che ho:
<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>
(Si noti la mancanza di uno spazio tra width = "" e src = "")
E
<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>
(Notare la mancanza di uno spazio tra larghezza = "" e altezza = "".)
C'è comunque da ignorare lo spazio bianco tra questi caratteri? Poiché non sono un esperto di Regex.
Grazie! Ho cambiato [\ s *] in \ s? e funziona ora! :) Grazie! – jameslfc19
@ jameslfc19 '\ s?' Significa 0 o 1 carattere di spazi bianchi. Tuttavia, cosa succede se ci sono più di 1 caratteri bianchi? Vuoi '\ s *' in modo che corrisponda a 0 o ** più **. A proposito di non voler usare regex per analizzare HTML. Si desidera utilizzare uno dei [questi] (http://stackoverflow.com/q/3577641/1592648) metodi. –