L'espace insécable et les formulaires

Mammouth du PHP | 2937 Messages

03 nov. 2006, 17:10

Salut à tous!

Lorsque du texte comporte une espace insécable (code ASCII 160 ou %A0 ou Alt+0160), ce dernier, en toute logique, est distingué de l'espace tout court. C'est ce que fait le code PHP suivant, par exemple:
<?php
$chaine='espace insécable'; // Alt+0160 entre les deux mots
$chaine_convertie=htmlentities($chaine); // Conversion de la chaîne de caractères en entités HTML
echo $chaine_convertie; // Affiche dans le code source espace&nbsp;ins&eacute;cable
?>
Or, si, dans un formulaire, je tape du texte comportant des espaces insécables (que ce soit dans un champ <input type="text"> ou dans un champ <textarea>), le code ci-dessus, en récupérant ce que j'ai saisi, récupère des espaces insécables traitées comme des espaces ordinaires (comme si j'avais tapé "espace ins&eacute;cable", et non "espace&nbsp;ins&eacute;cable")! :shock:

Les formulaires seraient-ils donc allergiques à l'espace insécable?

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

03 nov. 2006, 17:41

En HTML, l'espace insécable est le caractère spécial : &nbsp;
Le Alt 0160 ne me paraît donc pas adapté.

Mammouth du PHP | 2937 Messages

03 nov. 2006, 17:49

Salut!

Après poursuite de mes essais, j'ai constaté qu'Opera et Internet Explorer (aussi bien la version 6 que la 7) prenaient en charge l'espace insécable dans les formulaires :) , mais pas Firefox. :x

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 nov. 2006, 17:53

En HTML, l'espace insécable est le caractère spécial : &nbsp;
Le Alt 0160 ne me paraît donc pas adapté.
C'est le même en fait, le NonBreakingSPace communément appellé "neubeuspeu" est simplement l'encodage html du caractère   :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...