Как я должен пойти о добавлении наклонных черт только к одинарным кавычкам и игнорированию двойных кавычек?

Как я должен пойти о добавлении наклонных черт только к одинарным кавычкам и игнорированию двойных кавычек? Я использую php. Я только хотел бы выйти из одинарных кавычек для предотвращения моего php mysql запросы от повреждения.

Спасибо!

Править: Я думаю, поиск регулярного выражения и замена будут самыми полезными.

7
задан atwellpub 2 May 2010 в 18:22
поделиться

4 ответа

Ну, preg_replace_all("/([^\])'/","$1\'",$yourStrHere) сделает то, о чем вы спрашиваете:

  • "/([^\])'/" дает regex /([^\])'/, который говорит: "Искать любой символ, который не является обратной косой чертой, за которой следует одинарная кавычка, и захватывать символ перед кавычкой. "
  • "$1\'" говорит "заменить на захваченный символ, за которым следует обратная косая черта и одинарная кавычка"

НО...

Ответ Билла о параметризованных запросах с использованием API mysqli или PDO - очень, очень хороший совет. Проще и эффективнее позволить API вашей базы данных справиться с этим, чем делать это самому - люди, написавшие эти API (и люди, работавшие над родными бэкендами для этих API), вероятно, потратили больше времени и усилий на решение проблем безопасности и производительности, чем большинство из нас могут надеяться потратить сами.

3
ответ дан 6 December 2019 в 06:36
поделиться

Используйте mysql_real_escape_string. Он ускользает только от необходимых символов в отношении кодировки символов вашего соединения MySQL.

4
ответ дан 6 December 2019 в 06:36
поделиться

Должен работать простой str_replace("'", "'", $string). Но, как сказал Гамбо выше, вы должны использовать библиотечные функции, если вы пытаетесь избежать запросов MySQL.

5
ответ дан 6 December 2019 в 06:36
поделиться

Если вы используете параметры запроса для динамических значений, вам вообще не нужно выполнять экранирование.

Вы можете использовать параметры запроса в расширении mysqli или расширении PDO (я предпочитаю PDO). Старое расширение mysql не поддерживает параметры запроса.

1
ответ дан 6 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: