Рубин: Экранирование специальных символов в строке

Я пытаюсь написать метод, аналогичный mysqli_real_escape_string в PHP. Он принимает строку и экранирует «опасные» символы. Я искал способ, который сделает это за меня, но не могу его найти. Поэтому я пытаюсь написать его самостоятельно.

Это то, что у меня есть (я тестировал шаблон на Rubular.com , и он работал):

# 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

И я использую ] start_string как строку, которую я хочу изменить, и corrective_string как то, что я хочу, чтобы start_string превратился в:

start_string = %("My" 'name' *is* -john- .doe. /ok?/ C:\\Drive)
correct_string = %(\"My\" \'name\' \*is\* \-john\- \.doe\. \/ok?\/ C:\\\\Drive)

Может ли кто-нибудь попытаться помочь мне определить, почему я не получаю желаемый результат ( правильная_строка ), или сказать мне, где я могу найти метод, который делает это, или, еще лучше, сказать мне оба? Большое спасибо!

9
задан agentbanks217 10 November 2010 в 02:09
поделиться