У меня возникают проблемы с экранированием/удалением строк с помощью PHP/MySQL - кажется, что всегда есть избыточные косые черты.
В качестве примера возьмем следующую строку:
<span style="text-decoration:underline;">underline</span>
При добавлении строки в базу данных я экранирую ее с помощью mysql_real_escape_string()
, и в базе данных сохраняется следующее (EDIT: проверил это, запросив базу данных напрямую с помощью приложения mysql):
<span style=\\\"text-decoration:underline;\\\">underline</span>
При обратном чтении из базы данных я передаю строку через stripslashes()
, и возвращается следующее:
<span style=\"text-decoration:underline;\">underline</span>
Так как кавычки все еще экранированы, это ломает html и текст не подчеркивается.
- Почему
mysql_real_escape_string()
добавляет три косые черты, аstripslashes()
удаляет две косые черты? Я бы ожидал, что они оба добавят/удалит одну косую черту. - Как я могу предотвратить это?
- Правильно ли я подхожу к этому?
mysql()*
устарел с PHP 5.5.0, его не рекомендуется использовать для написания нового кода, так как он будет удален в будущем. вместо этого используйте либо mysqli, либо PDO - person   schedule 10.02.2013