Экранирование спец символов для вставки в MySQL

Поддержка
  • Подскажите пожалуйста как экранировать спец символ обратная косая черта
    как только не пробовал не выходит заменить надо через "выполнить код"

    Варианты которые пробовал:
    [[R1]] = [[R1]].split(""'").join("\")
    [[R1]] = [[R1]].split("'\'").join("\")
    [[R1]] = [[R1]].split("''").join("\")
    [[R1]] = [[R1]].split('').join("\")
    [[R1]] = [[R1]].split("[]").join("\")

    [[R1]] = [[R1]].split("~").join("\~")
    [[R1]] = [[R1]].split("!").join("\!")
    [[R1]] = [[R1]].split("@").join("\@")
    [[R1]] = [[R1]].split("#").join("\#")
    [[R1]] = [[R1]].split("$").join("\$")
    [[R1]] = [[R1]].split("%").join("\%")
    [[R1]] = [[R1]].split("*").join("\*")
    [[R1]] = [[R1]].split("(").join("\(")
    [[R1]] = [[R1]].split(")").join("\)")
    [[R1]] = [[R1]].split("_").join("\_")
    [[R1]] = [[R1]].split("—").join("\—")
    [[R1]] = [[R1]].split("+").join("\+")
    [[R1]] = [[R1]].split("=").join("\=")
    [[R1]] = [[R1]].split("|").join("\|")
    [[R1]] = [[R1]].split(":").join("\:")
    [[R1]] = [[R1]].split(";").join("\;")
    [[R1]] = [[R1]].split("'").join("\'")
    [[R1]] = [[R1]].split("<").join("\<")
    [[R1]] = [[R1]].split(">").join("\>")
    [[R1]] = [[R1]].split("?").join("\?")
    [[R1]] = [[R1]].split("/").join("\/")
    [[R1]] = [[R1]].split("^").join("\^")
    [[R1]] = [[R1]].split("&").join("\&")
    [[R1]] = [[R1]].split("\"").join("''")
    

    Все остальное вроде заменяет.
    Спасибо.

  • @mocard К чему этот огород?

    [[R1]] = [[R1]].replace(/([~!@#$%*()_—+=|:;'<>?\/^&])/g, "\/$1").replace(/"/g, "'");
    
  • @Fox Мда мне еще учится и учится! ))
    Спасибо FOX!

  • @Fox Привет!
    Подскажи пожалуйста при таком экранировании

    [[R1]] = [[R1]].replace(/([~!@#$%*()_—+=|:;'<>?\/^&])/g, "\/$1").replace(/"/g, "'");
    

    в базу MySQL вставляются данные пример: /(ПЕТРОВСКОГО/) а мне надо экранировать обратной косой чертой (), когда я пытаюсь поменять в твоем примере на обратную косую черту ругается на ошибку.

    [[R1]] = [[R1]].replace(\([~!@#$%*()_—+=|:;'<>?\/^&])/g, "\/$1").replace(/"/g, "'");
    

    Задача чтобы в базе был чистый текст (ПЕТРОВСКОГО) без символов экранирования.

  • @mocard said in Экранирование спец символов для вставки в MySQL:

    когда я пытаюсь поменять в твоем примере на обратную косую черту ругается на ошибку.

    Это синтаксис js replace(pattern, replacement), слешами выделяется регулярное выражение, которое необходимо применить к строке

    text.replace(/blue/g, "red");
    

    Символы для добавления слеша находятся в квадратных скобках [~!@#$%*()_—+=|:;'<>?\/^&], для замены кавычек использется второй replace, соответственно для удаления слешей нужно добавить ещё один replace

    [[R1]] = [[R1]].replace(/([~!@#$%*()_—+=|:;'<>?\/^&])/g, "\/$1").replace(/"/g, "'").replace(/(\/)/g, "");
    
  • как вариант конвертировать в Base64 и записывать в базу, если контекстный поиск не нужен.

  • ну или так
    https://qna.habr.com/q/1235258

  • @Fox said in Экранирование спец символов для вставки в MySQL:

    .replace(/(/)/g, "");

    Спасибо за детальное разъяснение, думаю на форуме пригодится!