Récupérer apostrophe avec $_POST

Eléphanteau du PHP | 13 Messages

28 août 2006, 16:57

Bonjour,

J'ai un petite problème lors de l'nvoie d'une variable avec un apostrophe avec la méthode $_POST.

Voici mon code:

Code : Tout sélectionner

if (isset($_POST['NomEtape']))$NomEtape = $_POST['NomEtape']; echo "<form name='saisie' method='post' action=''>"; echo "<td width='5%' align=left><b>"; echo "<select name='NomEtape'>"; $Etape = 'L'espace'; echo "<option value='$Etape '>$Etape </option>"; echo "</select></b><input type='submit' name='action' value='OK'>"; echo "</td>"; echo "</form>"; echo $NomEtape;


Mais avec la méthode POST dans ma variable $NomEtape , je récupère juste le L est pas le reste. Même je mets Etape = 'L\'espace';

Merci d'avance pour une solution. :)

Mammouth du PHP | 991 Messages

28 août 2006, 17:04

normal l'url ne gere pas de ' ou " le seul moyen est de le remplacer par un autre caractere comme _ par exemple
DevOps, Symfony4, Hoa

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

28 août 2006, 17:30

Y a pas besoin de remplacer par un autre caractère, faut juste jouer avec les guillemets et les apostrophes. Ton problème, vient du fait que le html généré n'est pas bon
<?php
$Etape = 'L\'espace'; 
echo "<option value='$Etape '>$Etape </option>"; 
?>

va générer le code html suivant : 
<option value='L'espace '>L'espace </option>
et du coup, la value de ton option s'arrête à 'L', le "espace '" étant ignoré.

Tu peux protéger l'apostrophe dans le html en protégeant (en php) le caractère protégeant l'apostrophe (en html) : 'L\\\'espace', mais c'est un peu lourd à mon avis. Sinon en jouant juste sur l'imbrication apostrophes/guillemets, tu peux aussi faire un truc du genre
$Etape = "L'espace"; 
echo '<option value="' . $Etape .'">'.$Etape.'</option>';
Voire enfin, puisque ton libellé à la même valeur que ton option, laisser tomber le champ value, le libellé étant dès lors utilisé par défaut comme valeur :
$Etape = "L'espace"; 
echo "<option>$Etape </option>";