J'essaie d'écrire une méthode qui est la même que mysqli_real_escape_string
en PHP. Il prend une chaîne et échappe à tous les personnages «dangereux». J'ai cherché une méthode qui va le faire pour moi mais je ne peux pas en trouver un. Donc j'essaye d'en écrire un seul.Ruby: Echapper des caractères spéciaux dans une chaîne
C'est ce que j'ai jusqu'à présent (je l'ai testé le modèle à Rubular.com et cela a fonctionné):
# Finds the following characters and escapes them by preceding them with a backslash. Characters: ' " . */\ -
def escape_characters_in_string(string)
pattern = %r{ (\'|\"|\.|\*|\/|\-|\\) }
string.gsub(pattern, '\\\0') # <-- Trying to take the currently found match and add a \ before it I have no idea how to do that).
end
Et je me sers start_string
que la chaîne que je veux changer, et correct_string
comme ce que je veux start_string
de se transformer en:
start_string = %("My" 'name' *is* -john- .doe. /ok?/ C:\\Drive)
correct_string = %(\"My\" \'name\' \*is\* \-john\- \.doe\. \/ok?\/ C:\\\\Drive)
quelqu'un peut-il essayer de me aider à comprendre pourquoi je ne reçois pas ma sortie désirée (correct_string
) ou me dire où je peux trouver une méthode qui fait cela, ou encore mieux dire m Les deux? Merci beaucoup!
Si vous mettez '' start_string' dans escape_characters_in_string' et vous ne recevez pas ce que vous » vous attendez? Quelle est cette sortie incorrecte? Vous nous avez donné ce que vous attendez de voir, maintenant dites ce que vous voyez réellement ... – masher
Quand je "met" les résultats de "escape_characters_in_string (start_string)", rien ne change; il imprime le contenu de 'start_string' – agentbanks217
Regexp.escape (str) –