Aller au contenu

Regex


xpatval

Sujets conseillés

Bonjour, après-midi,

Ayant un souci d'utilisation de HTMLAREA, qui n'est pas "compatible" Xhtml strict, je merdoie lamentablement sur la transformation des balises html, qui sont traduites en majuscule à la sortie de htmlarea.

Les regex n'étant pas mon fort, quel peut-être le code pour transformer ces balises, en minuscule ? Sachant qu'il peut y avoir plusieurs mêmes balises dans une saisie ?

Auriez-vous une idée qui m'aiderait ?

Merci,

xpatval

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Je ne connais pas du tout htmlarea mais je suppose que la fonction strtolower() pourrait t'être utile... non ? :)

Lien vers le commentaire
Partager sur d’autres sites

Il faut faire une recherche des balises html, et leur renvoyer la version 'minuscule' ;)

preg_replace("/(<\/?)(\w+)([^>]*>/e", "'\\1'.strtolower('\\2').'\\3'", $html_body);

Anonymus.

Lien vers le commentaire
Partager sur d’autres sites

Heu...

Je viens de tester rapidement avec ceci:

<body>
<?php
$text = "<P>Il était. Une fois, la PRISE dE la Bastille.</P>";
#$text = strtolower($text);
preg_replace("/(<\/?)(\w+)([^>])*>/e", "'\\1'.strtolower('\\2').'\\3'", $text);
print $text;
?>
</body>

Lorsque je regarde le source de la page:

<body>
<P>Il était. Une fois, la PRISE dE la Bastille.</P></body>
</html>

Les balises paragraphes restent en majuscule.

:rolleyes:

xpatval

Lien vers le commentaire
Partager sur d’autres sites

Anonymous, il manquait une parenthèse dans ton code, aussi, je l'ai placé ici:

$com_long = preg_replace("/(<\/?)(\w+)([^>]*>)/e", "'\\1'.strtolower('\\2').'\\3'", $com_long);

C'est à dire avant le /e de la première partie

En espérant ne pas m'être planté...

xpatval

Lien vers le commentaire
Partager sur d’autres sites

Ca donne ca :

<html>
<body>
<?php
echo"<hr>";
$text = "<p>Il était. Une fois, la PRISE dE la Bastille.</P>";
$text = preg_replace("/(<\/?)(\w+)([^>]*>)/e", "'\\1'.strtoupper('\\2').'\\3'", $text);
$text=str_replace("<","<",$text);
echo $text."\n";

echo"<hr>";
$text = "<p>Il était. Une fois, la PRISE dE la Bastille.</P>";
$text = preg_replace("/(<\/?)(\w+)([^>]*>)/e",  "'\\1'.strtolower('\\2').'\\3'", $text);

$text=str_replace("<","<",$text);
echo $text."\n";
echo"<hr>";
?>
</body>
</html>

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...