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

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

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

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

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

<?php
 $str="Какое-то строковое значение";
 echo $str;
?>

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

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

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

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

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

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

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

<?php
$cheloveki-parohodi=""Крузерштерн", "Остап Бендер","Рога и копыта","Винни-Пух","Крокодил Гена"";
 echo $cheloveki-parohodi;
?>

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

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

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

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

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

<?php
 echo "\"Крузерштерн\", \"Остап Бендер\",\"Рога икопыта\",
 \"Винни-Пух\",\"Крокодил Гена\"";

?>

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

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

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

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

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

<?php
$inozemec="Привет всем 'инопланетянам' от землян";
echo str_replace("'","\"",$inozemec);
?>

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

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

<?php
$inozemec="Привет всем 'инопланетянам' от землян";
$str = preg_replace('%[^A-Za-zА-Яа-я0-9]%', ' ', $inozemec);
echo $str;
?>

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

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

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Курс по программированию на языке PHP

Изучите PHP с нуля до результата!

Смотреть курс

Метки:

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

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

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree