Espace Optionnel Regex
J'ai un problème en essayant d'ignorer les espaces entre certains caractères. J'ai googlé pendant quelques jours et n'arrive pas à trouver la bonne solution.
Voici mon code:
// Get Image data
preg_match('#<a href="(.*?)" title="(.*?)"><img alt="(.*?)" src="(.*?)"[s*]width="150"[s*]height="(.*?)"></a>#', $data, $imagematch);
$image = $imagematch[4];
, Fondamentalement, ce sont quelques-uns des scénarios que j'ai:
<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>
(Notez l'absence d'un espace entre width="" src="")
Et
<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>
(Notez l'absence d'un espace entre width="" et height="".)
Est-il de toute façon d'ignorer les espaces dans entre ces personnages? Comme je ne suis pas un expert en Regex.
1 réponses
Ajouter un \s?
si un espace peut être autorisé.
\s représente l'espace blanc
? dit que le caractère précédent peut se produire une fois ou ne pas se produire.
Si plusieurs espaces sont autorisés et sont facultatifs, utilisez \s*
.
* dit caractère précédent peut se produire zéro ou plusieurs fois.
'#<a href\s?="(.*?)" title\s?="(.*?)"><img alt\s?="(.*?)" src\s?="(.*?)"[\s*]width\s?="150"[\s*]height\s?="(.*?)"></a>#'
Permet un espace facultatif entre le nom de l'attribut et =.
Si vous voulez un espace optionnel après le =
aussi, ajoutez un \s?
après c'est aussi.
De même, partout où vous avez des caractères optionnels, vous pouvez utiliser ?
si l'occurrence maximale est 1 ou {[6] } Si l'occurrence maximale est illimitée, en suivant le caractère facultatif.
Et votre problème [\s*]
, qui provoque l'apparition de un espace ou a * comme caractères inclus dans [
et ]
est une classe de caractères. Une classe de caractères permet de survenance de l'un de ses membres une fois (donc supprimer *
) et si vous ajoutez un quantificateur (?
, +
, *
etc) après le ]
tout caractère (s) dans la classe de caractères peut se produire en fonction du quantificateur.