Regex d'espaces facultatif : ignorer les espaces dans les valeurs d'attribut
En programmation, il existe des scénarios dans lesquels vous devez gérer les instances où les chaînes contiennent des espaces facultatifs . Cela peut être difficile lors de l'écriture d'expressions régulières pour extraire des données avec précision.
Considérez le code suivant :
# Get Image data preg_match('#<a href="(.*?)" title="(.*?)"><img alt="(.*?)" src="(.*?)"[\s*]width="150"[\s*]height="(.*?)"></a>#', $data, $imagematch); $image = $imagematch[4];
Ce code extrait l'attribut src d'une image du balisage HTML. Cependant, il ne parvient pas à gérer les cas où il n'y a pas d'espace entre certains attributs, tels que :
<code class="html"><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></code>
ou
<code class="html"><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></code>
Pour résoudre ce problème, nous pouvons utiliser une expression régulière d'espaces facultative. Cela nous permet d'ignorer les espaces entre les caractères. Voici comment :
#<a href\s?="(.*?)" title\s?="(.*?)"><img alt\s?="(.*?)" src\s?="(.*?)"[\s*]width\s?="150"[\s*]height\s?="(.*?)"></a>#
Dans cette expression régulière mise à jour :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!