3 votes

Échapper aux guillemets ou aux caractères spéciaux dans la valeur du tableau

Dans mon code PHP, je crée une zone où les personnes peuvent entrer leurs propres informations à afficher. Les informations sont stockées dans un tableau et je veux le rendre aussi flexible que possible.

Si j'ai quelque chose comme...

$myArray[]['Text'] = 'Don't want this to fail';

ou

$myArray[]['Text'] = "This has to be "easy" to do";

Comment faire pour échapper à l'apostrophe ou au guillemet dans la valeur du tableau ?

Remerciements

Edit : Puisqu'il n'y a qu'une relation de un à un, j'ai changé mon tableau en cette structure...

$linksArray['Link Name'] ='/path/to/link';
$linksArray['Link Name2'] ='/path/to/link2';
$linksArray['Link Name2'] ='/path/to/link3';

L'idée est de créer un modèle avec un fichier include qui contient ces liens dans un format que quelqu'un d'autre (une personne moins technique) peut maintenir. Cette personne aura un accès direct au PHP et je crains qu'elle ne mette un guillemet simple ou double dans la zone "nom du lien" et ne casse le système.

Merci encore.

SOLUTION POSSIBLE :

Merci @Tim Cooper.

Voici un exemple qui a fonctionné pour moi...

$link = "http://www.google.com";
$text = <<<TEXT
Don't you loving "googling" things
TEXT;
$linksArray[$text] = $link;

1voto

Jordan Arseno Points 3979

PHP traitera ces chaînes correctement lors de la saisie. Si vous construisez les chaînes vous-même comme vous l'avez montré, vous pouvez alterner entre les styles de citation (simple et double)... comme dans :

$myArray[]['Text'] = "Don't want this to fail";
$myArray[]['Text'] = 'This has to be "easy" to do';

Ou, si vous devez échapper aux caractères, vous utilisez le caractère \ avant la citation.

$myArray[]['Text'] = 'Don\'t want this to fail';
$myArray[]['Text'] = "This has to be \"easy\" to do";

0voto

Sander Marechal Points 13699

Si vous voulez vraiment simplifier les choses, utilisez un fichier de configuration séparé dans le style INI ou XML. Le format INI est généralement le plus facile à éditer manuellement. Le format XML convient si vous avez une structure très imbriquée.

0voto

simshaun Points 14463

À moins que vous ne laissiez les utilisateurs entrer directement du code PHP (ce qui n'est probablement pas le cas), vous n'avez pas à vous préoccuper de ce qu'ils entrent jusqu'à ce que vous l'affichiez. Lorsque vous affichez les informations qu'ils ont saisies, vous devez les assainir en utilisant quelque chose comme htmlentities() .

Edit : Je me rends compte que j'ai peut-être mal compris votre question. Si c'est le cas, ignorez ceci ! :)

0voto

Matt Beckman Points 2610

Vous pouvez utiliser la fonction addslashes($str) pour échapper automatiquement aux guillemets.

Vous pouvez également essayer htmlentities, qui codera les guillemets et autres valeurs spéciales en entités HTML : http://php.net/manual/en/function.htmlentities.php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X