Застосовуйте PHP спецсимволи – вони набагато безпечніше

21

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

Екранування та спеціальні символи

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

Застосовуйте PHP спецсимволи – вони набагато безпечніше

З цього простого прикладу стає ясно, що з PHP екрануванням спецсимволов ви все одно рано чи пізно зустрінетеся. Чому? Тому що ця мова використовується для створення динамічних ресурсів.

З допомогою PHP сторінки сайтів збираються на стороні сервера після їхнього запиту з боку клієнтського додатка (браузера). А, як нам відомо, структура будь-якого інтернет-ресурсу розмічається за допомогою HTML. В тому числі з його допомогою задається форматування текстового контенту, в якому лапки використовуються повсюдно.

Ще один приклад

Давайте спробуємо розібрати все сказане вище на якомусь прикладі. Використання лапок у російській мові виділяються і пряма мова, та іменники з власними іменами, і інші структури.

Наприклад, нам потрібно вивести в лапках назви кораблів (ну, тих, які відразу «людина і пароплав»). Ось тут нам і знадобиться PHP екранування спецсимволов:

Начебто все правильно зробили: екранували значення рядка згідно синтаксису PHP, і назва «пароходочеловеков» (за правилами російської мови) обернули в лапки. Ось тільки у відповідь ми отримаємо на екрані не текст, а повідомлення про допущену синтаксичну помилку.

Застосовуйте PHP спецсимволи – вони набагато безпечніше

Щоб ви не мучилися, відразу покажу, як працювати теж не буде.

Застосовуйте PHP спецсимволи – вони набагато безпечніше

Звичайно, можна видалити спецсимволи в коді PHP, але тоді проявитесь серед користувачів, які будуть читати ваш контент, як безграмотні. Так що потрібно екранувати спецсимволи іншими спецсимволів Застосовуйте PHP спецсимволи – вони набагато безпечніше . Ось так:

Застосовуйте PHP спецсимволи – вони набагато безпечніше

Ще кілька потрібних прикладів

Трохи «перефразуємо» наш основний приклад. Ми пам’ятаємо, що PHP тісно пов’язаний з MySQL. А у цієї СУБД апостроф ну ніяк не хоче записуватися в БД. Він ігнорується інтерпретатором. Цей знак найчастіше використовується при написанні іноземних (англомовних) або прізвищ в українській мові. Наприклад, O’connell. Щоб не проставляти слеші власноруч, екранування можна довірити функції addslashes().

Застосовуйте PHP спецсимволи – вони набагато безпечніше

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

Застосовуйте PHP спецсимволи – вони набагато безпечніше

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

Застосовуйте PHP спецсимволи – вони набагато безпечніше

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