J’écris du code JavaScript qui utilise une chaîne rendue avec PHP. Comment puis-je échapper aux guillemets simples (et aux guillemets simples) dans ma chaîne PHP?
$('#myElement').html('say hello to ');
Tout simplement: echo str_replace('\'', '\\\'', $mySsortingng);
Cependant, je suggère d’utiliser les fonctions JSON et json_encode()
car elles seront plus fiables (citant par exemple de nouvelles lignes):
'...'); ?>
str_replace("'", "\'", $myssortingngWithSingleQuotes);
Dans certains cas, je viens de le convertir en ENTITÉS:
//ie $x= ABC\DEFGH'IJKL $x= str_ireplace("'", "'", $x); $x= str_ireplace("\\", "\", $x); $x= str_ireplace('"', """, $x);
sur la page HTML, la sortie visuelle est la même:
ABC\DEFGH'IJKL
Cependant, il est désinfecté à la source.
Si vous voulez échapper des caractères avec un \
vous avez par exemple addcslashes()
si vous ne voulez échapper que des guillemets simples comme la question que vous pouvez poser:
echo addcslashes($value, "'");
Et si vous voulez vous échapper '
, "
, et nul
(l’octet null), vous pouvez utiliser addslashes()
:
echo addslashes($value);
Pour remplacer uniquement les guillemets simples, utilisez cette simple déclaration:
$ssortingng = str_replace("'","\\'", $ssortingng);
Après un long combat contre ce problème, je pense avoir trouvé la meilleure solution.
Combiner deux fonctions permet d’échapper à une chaîne à utiliser en HTML.
Un pour échapper à la double citation si vous utilisez la chaîne dans un appel de fonction javascript, et d’autres pour échapper à la citation unique pour éviter les simples guillemets qui entourent l’argument.
Solution:
mysql_real_escape_ssortingng(htmlspecialchars($ssortingng))
Résoudre:
echo ‘onclick = “javascript_function (\’. mysql_real_escape_ssortingng (htmlspecialchars ($ ssortingng))”
Je sais que je suis en retard à la fête. Mais vous pouvez utiliser la fonction addcslashes pour obtenir ce résultat,
echo addcslashes($text, "'\\");
Vous ne savez pas exactement ce que vous faites avec vos données, mais vous pouvez toujours essayer:
$ ssortingng = str_replace (“‘”, “% 27”, $ ssortingng);
Je l’utilise chaque fois que des chaînes sont envoyées à une firebase database pour être stockées. % 27 est le codage pour le caractère ‘, et cela aide également à empêcher l’interruption des requêtes GET si un seul caractère est contenu dans une chaîne envoyée à votre serveur. Je remplacerais ‘avec% 27 dans javascript et PHP juste au cas où quelqu’un essaierait d’envoyer manuellement des données à votre fonction PHP. Pour le rendre plus joli pour votre utilisateur final, exécutez simplement une fonction de remplacement inverse pour toutes les données que vous recevez de votre serveur et remplacez toutes les sous-chaînes% 27 par ‘.
Bonne injection en évitant!
J’ai écrit la fonction suivante. Il remplace le suivant:
Single Quote [‘] avec slash et guillemet simple [\’]
Barre oblique inverse [\] avec deux barres obliques inverses [\\]
function escapePhpSsortingng($target) { $replacements = array( "'" => '\\\'', "\\" => '\\\\' ); return strtr($target, $replacements); }
Vous pouvez le modifier pour append ou supprimer des remplacements de caractères dans le tableau $ replacements. Par exemple, pour remplacer \ r \ n, il devient “\ r \ n” => “\ r \ n” et “\ n” => “\ n”.
/** * With new line replacements too */ function escapePhpSsortingng($target) { $replacements = array( "'" => '\\\'', "\\" => '\\\\', "\r\n" => "\\r\\n", "\n" => "\\n" ); return strtr($target, $replacements); }
La caractéristique intéressante de strtr est qu’elle préférera les longs remplacements. Exemple: “Cool \ r \ nFeature” échappera \ r \ n plutôt que de s’échapper \ n.
Voici comment je l’ai fait. Stupide mais simple.
$singlequote = "'"; $picturefile = getProductPicture($id); echo showPicture('.$singlequote.$picturefile.$singlequote.');
Je travaillais sur la sortie du code HTML appelé code JavaScript pour afficher une image …
Utilisez la fonction native htmlspecialchars
pour échapper à tout chargeur spécial. Si vous voulez échapper spécifiquement à quate, utilisez ENT_COMPAT
ou ENT_QUOTES
. Voici l’exemple.
$str = "Jane & 'Tarzan'"; echo htmlspecialchars($str, ENT_COMPAT); // Will only convert double quotes echo "
"; echo htmlspecialchars($str, ENT_QUOTES); // Converts double and single quotes echo "
"; echo htmlspecialchars($str, ENT_NOQUOTES); // Does not convert any quotes
La sortie serait comme ça
Jane & 'Tarzan'
Jane & 'Tarzan'
Jane & 'Tarzan'
En savoir plus ici, https://www.w3schools.com/php/func_ssortingng_htmlspecialchars.asp