От автора: вчера вышел утром поздороваться с соседом. Слово за слово, потом разговор перешел на повышенные тона и «спецсимволы» (из трех пальцев и меньше), а потом нас жены еле разняли. Хорошо, что PHP спецсимволы намного безопаснее!
Экранирование и специальные символы
Спецсимволы и программирование – вещи неразделимые! Хочешь или не хочешь, все равно «напорешься» на них. Чаще всего разработчики «спотыкаются» об кавычки (двойные и одинарные), которые используются для отделения значений типа srting. То есть сначала идет объявление переменной, а затем ей присваивается какое-то строковое значение. Например:
<?php $str="Какое-то строковое значение"; echo $str; ?>
Из этого простого примера становится ясно, что с PHP экранированием спецсимволов вы все равно рано или поздно встретитесь. Почему? Потому что этот язык используется для создания динамических ресурсов.
С помощью PHP страницы сайтов собираются на стороне сервера после их запроса со стороны клиентского приложения (браузера). А, как нам известно, структура любого интернет-ресурса размечается с помощью HTML. В том числе с его помощью задается форматирование текстового контента, в котором кавычки используются повсеместно.

Практический курс по созданию веб-приложения на PHP & MySQL с нуля!
Изучите курс и создайте ваше первое приложение на PHP всего за 3 дня!
Изучить курсЕще один пример
Давайте попытаемся разобрать все сказанное выше на каком-нибудь примере. С помощью кавычек в русском языке выделяются и прямая речь, и существительные с собственными именами, и другие структуры.
Например, нам нужно вывести в кавычках названия кораблей (ну, тех, которые сразу «и человек, и пароход»). Вот здесь нам и понадобится PHP экранирование спецсимволов:
<?php $cheloveki-parohodi=""Крузерштерн", "Остап Бендер","Рога и копыта","Винни-Пух","Крокодил Гена""; echo $cheloveki-parohodi; ?>
Вроде бы все правильно сделали: экранировали значение строки согласно синтаксису PHP, и название «пароходочеловеков» (по правилам русского языка) обернули в кавычки. Вот только в ответ мы получим на экране не текст, а сообщение о допущенной синтаксической ошибке.
Чтобы вы не мучились, сразу покажу, как работать тоже не будет.
Конечно, можно удалить спецсимволы в коде PHP, но тогда проявитесь среди пользователей, которые будут читать ваш контент, как безграмотные. Так что нужно экранировать спецсимволы другими спецсимволами . Вот так:
<?php echo "\"Крузерштерн\", \"Остап Бендер\",\"Рога икопыта\", \"Винни-Пух\",\"Крокодил Гена\""; ?>
Еще несколько нужных примеров
Немного «перефразируем» наш основной пример. Мы помним, что PHP тесно связан с MySQL. А в этой СУБД апостроф ну никак не хочет записываться в БД. Он игнорируется интерпретатором. Этот знак чаще всего используется при написании иностранных (англоязычных) фамилий или в украинском языке. Например, O’Connell. Чтобы не проставлять слеши собственноручно, экранирование можно доверить функции addslashes().
Теперь выясним, как в PHP осуществить замену спецсимволов. Для этого мы применим строковую функцию str_replace(). В качестве аргументов она принимает три значения: исходную строку, какой символ менять и на что. Пример:
<?php $inozemec="Привет всем 'инопланетянам' от землян"; echo str_replace("'","\"",$inozemec); ?>
Также с помощью данной функции можно убрать спецсимволы PHP, заменив их на обычный пробел. Вот еще один вариант решения проблемы, но теперь уже с помощью регулярных выражений:
<?php $inozemec="Привет всем 'инопланетянам' от землян"; $str = preg_replace('%[^A-Za-zА-Яа-я0-9]%', ' ', $inozemec); echo $str; ?>
С помощью шаблона, указанного в функции preg_replace(), в PHP мы удалили спецсимволы из строки. Думаю, на сегодня регулярных выражений и спецсимволов достаточно. Я еще от вчерашних не отошел .

Практический курс по созданию веб-приложения на PHP & MySQL с нуля!
Изучите курс и создайте ваше первое приложение на PHP всего за 3 дня!
Изучить курс
Разработка веб-приложения на PHP
Создайте веб-приложение на PHP на примере приема платежей на сайте
Получить