Ну, ваша проблема правильная цитирование . Ваша проблема в том, что вам нужно различное цитирование для MySQL и для HTML, и вы, вероятно, также можете установить magic_quotes_gpc! При цитировании вы всегда цитируете текст для какого-то конкретного вывода , например:
- строковое значение для запроса MySQL
like
выражение для запроса mysql
- HTML-код
- 1017 * JSON *
- регулярное выражение mysql
- PHP регулярное выражение
Для каждого случая вам нужны разные кавычки, потому что каждое использование присутствует в различном синтаксическом контексте. Это также подразумевает, что цитирование должно производиться не при вводе в PHP, а при конкретном выводе ! Именно поэтому такие функции, как magic_quotes_gpc
, не работают ( гарантируют, что он выключен !!! ).
Итак, какие методы можно использовать для цитирования в этих конкретных случаях? (Не стесняйтесь поправлять меня, могут быть более современные методы, но они работают для меня)
mysql_real_escape_string($str)
mysql_real_escape_string(addcslashes($str, "%_"))
htmlspecialchars($str)
json_encode()
- только для utf8! Я использую свою функцию для ISO-8859-2
mysql_real_escape_string(addcslashes($str, '^.[]$()|*+?{}'))
- вы не можете использовать preg_quote в этом случае, потому что обратный слеш будет экранирован два раза!
preg_quote()
РЕДАКТИРОВАТЬ: Относительно вашего исходного вопроса - если вы исправите свою цитату, то, конечно, вы можете использовать любые символы в строках, включая одинарные и двойные кавычки.