Version complète: sur le forum Webmaster Hub : Regex
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
xpatval
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
Titag
Bonjour,

Je ne connais pas du tout htmlarea mais je suppose que la fonction strtolower() pourrait t'être utile... non ? smile.gif
xpatval
Non, le strtolower() convertit tous les caractères, y compris ceux du texte.
Anonymus
Il faut faire une recherche des balises html, et leur renvoyer la version 'minuscule' wink.gif
CODE
preg_replace("/(<\/?)(\w+)([^>]*>/e", "'\\1'.strtolower('\\2').'\\3'", $html_body);


Anonymus.
xpatval
Heu...
Je viens de tester rapidement avec ceci:
CODE
<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:
CODE
<body>
<P>Il était. Une fois, la PRISE dE la Bastille.</P></body>
</html>
Les balises paragraphes restent en majuscule.

rolleyes.gif

xpatval
xpatval
Anonymous, il manquait une parenthèse dans ton code, aussi, je l'ai placé ici:
CODE
$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
Anonymus
Ca donne ca :
CODE
<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("<","&lt;",$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("<","&lt;",$text);
    echo $text."\n";
echo"<hr>";
?>
</body>
</html>
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.