Je travaille avec une expression régulière en PHP. J'ai la chaîne suivante:
<img
src="/files/admin/hotel_website.gif" alt="Go To The Hotel's Web
Site" align="absmiddle" border="0" class="hotel_icon" />
Cette chaîne contient des caractères de retour chariot et de saut de ligne.
Je veux que mon expression régulière remplace les balises html img par IMG mais cela ne fonctionne pas avec le texte ci-dessus.
J'ai découvert qu'il contenait ces caractères en parcourant chaque caractère de la chaîne et en imprimant la représentation hexadécimale qui peut être trouvée ici ( http://Pastebin.com/ViNdBsRV ).
Voici mon expression régulière:
strip_tags(preg_replace('/^\s*<img\s*.*\/?>\s*$/i', '[IMG]', $test));
Appréciez l'aide.
Cette:
preg_replace("#<img.+?/>#is", '[IMG]', $test)
Personnellement, quand je fais une expression régulière, j'essaie toujours d'aller le plus court/le plus simple. Ici, vous souhaitez remplacer une balise entière, qui commence par '<img
'et se termine par' />
',' .+?
'est une capture non gourmande (paresseuse). Et pour les modificateurs 'i
' pour le cas et 's
' à .
la possibilité d'être une nouvelle ligne.
Plus d'informations sur la cupidité vs la paresse: http://www.regular-expressions.info/repeat.html
Plus d'informations sur les modificateurs: http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php
[\n\r]+
Correspondra aux nouvelles lignes. Pour les espaces blancs, ajoutez [\n\r\s]+
Cela a fonctionné pour moi, il correspond à plusieurs espaces et multilignes, ainsi qu'à tout autre caractère ou symbole.
[\S+\n\r\s]+
J'espère que cela aide n'importe qui.
Cela correspond par exemple:
stpd : asdfasdf
this is also matching ***