Применяйте PHP спецсимволы – они намного безопаснее

Применяйте PHP спецсимволы – они намного безопаснее

От автора: вчера вышел утром поздороваться с соседом. Слово за слово, потом разговор перешел на повышенные тона и «спецсимволы» (из трех пальцев и меньше), а потом нас жены еле разняли. Хорошо, что PHP спецсимволы намного безопаснее!

Экранирование и специальные символы

Спецсимволы и программирование – вещи неразделимые! Хочешь или не хочешь, все равно «напорешься» на них. Чаще всего разработчики «спотыкаются» об кавычки (двойные и одинарные), которые используются для отделения значений типа srting. То есть сначала идет объявление переменной, а затем ей присваивается какое-то строковое значение. Например:

Применяйте PHP спецсимволы – они намного безопаснее

Из этого простого примера становится ясно, что с PHP экранированием спецсимволов вы все равно рано или поздно встретитесь. Почему? Потому что этот язык используется для создания динамических ресурсов.

С помощью PHP страницы сайтов собираются на стороне сервера после их запроса со стороны клиентского приложения (браузера). А, как нам известно, структура любого интернет-ресурса размечается с помощью HTML. В том числе с его помощью задается форматирование текстового контента, в котором кавычки используются повсеместно.

Еще один пример

Давайте попытаемся разобрать все сказанное выше на каком-нибудь примере. С помощью кавычек в русском языке выделяются и прямая речь, и существительные с собственными именами, и другие структуры.

Например, нам нужно вывести в кавычках названия кораблей (ну, тех, которые сразу «и человек, и пароход»). Вот здесь нам и понадобится PHP экранирование спецсимволов:

Вроде бы все правильно сделали: экранировали значение строки согласно синтаксису PHP, и название «пароходочеловеков» (по правилам русского языка) обернули в кавычки. Вот только в ответ мы получим на экране не текст, а сообщение о допущенной синтаксической ошибке.

Применяйте PHP спецсимволы – они намного безопаснее

Чтобы вы не мучились, сразу покажу, как работать тоже не будет.

Применяйте PHP спецсимволы – они намного безопаснее

Конечно, можно удалить спецсимволы в коде PHP, но тогда проявитесь среди пользователей, которые будут читать ваш контент, как безграмотные. Так что нужно экранировать спецсимволы другими спецсимволами :). Вот так:

Применяйте PHP спецсимволы – они намного безопаснее

Еще несколько нужных примеров

Немного «перефразируем» наш основной пример. Мы помним, что PHP тесно связан с MySQL. А в этой СУБД апостроф ну никак не хочет записываться в БД. Он игнорируется интерпретатором. Этот знак чаще всего используется при написании иностранных (англоязычных) фамилий или в украинском языке. Например, O’Connell. Чтобы не проставлять слеши собственноручно, экранирование можно доверить функции addslashes().

Применяйте PHP спецсимволы – они намного безопаснее

Теперь выясним, как в PHP осуществить замену спецсимволов. Для этого мы применим строковую функцию str_replace(). В качестве аргументов она принимает три значения: исходную строку, какой символ менять и на что. Пример:

Применяйте PHP спецсимволы – они намного безопаснее

Также с помощью данной функции можно убрать спецсимволы PHP, заменив их на обычный пробел. Вот еще один вариант решения проблемы, но теперь уже с помощью регулярных выражений:

Применяйте PHP спецсимволы – они намного безопаснее

С помощью шаблона, указанного в функции preg_replace(), в PHP мы удалили спецсимволы из строки. Думаю, на сегодня регулярных выражений и спецсимволов достаточно. Я еще от вчерашних не отошел :).

Метки:

Похожие статьи:

Комментарии Вконтакте: