Mam problem z ignorowaniem spacji między określonymi znakami. Przez kilka dni googlowałem i nie mogę znaleźć rozwiązania.Opcjonalne białe znaki Regex
Oto mój kod:
// Get Image data
preg_match('#<a href="(.*?)" title="(.*?)"><img alt="(.*?)" src="(.*?)"[\s*]width="150"[\s*]height="(.*?)"></a>#', $data, $imagematch);
$image = $imagematch[4];
Zasadniczo są to jedne z tych scenariuszy nie mam:
<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>
(Zwróć uwagę na brak przestrzeni pomiędzy width = "" i src = "")
I
<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>
(Zwróć uwagę na brak spacji między width = "" a height = "".)
Czy mimo to należy zignorować białe spacje pomiędzy tymi znakami? Ponieważ nie jestem ekspertem Regex.
Dzięki! Zmieniłem [\ s *] na \ s? i teraz działa! :) Dziękuję Ci! – jameslfc19
@ jameslfc19 '\ s?' Oznacza 0 lub 1 znak odstępu. Co jednak, jeśli istnieje więcej niż 1 znak odstępu? Chcesz '\ s *', aby pasowało 0 lub ** więcej **. Przy okazji nie używaj regex do parsowania HTML. Chcesz użyć jednej z tych metod (http://stackoverflow.com/q/3577641/1592648). –