PHP: Отново за кавички, премахване на пропуските и постоянен PHP_INI_ *
Типични задачи изключени от което потребителят въвежда допълнителни пространства и / или етикет е решен в почти всеки професионален скрипт в PHP.
Премахване на тагове лесно strip_tags стандартна характеристика. но за да премахнете всички излишни интервали (включително между думи), не е достатъчно за нас стандартната тапицерия. най-малкото, което трябва да се използва регулярен израз:
(Или алтернативни експресия, както тук).
Само ще нерешен проблем с кавички. Уви, с настройките по подразбиране на PHP (включително, в текущата версия 5.3.1), цитати от мина, за да публикувате метод или да получите след като потребителят вход низ, докато те се показват на екрана може да бъде "проверен", т.е. "по- кодът ще стане # 92; ":
Въведете "word1" даде изход # 92; "word1 # 92;". За котировки настройки в PHP 4-5 версии вече отговарят на 3 променливи в бъдеща версия 6 на обещанието си да се премахне.
magic_quotes_gpc -., ако директивата е включена, всички герои " ". \ И NUL (нулев байт код) автоматично ще избяга обратно наклонена черта \. От версия 5.3.0 отхвърлена опция, ще бъде премахната в PHP 6.0.0. Не променяйте версии на софтуера по-стари от 4.2.3. Е активирана по подразбиране, това е настройка "виновен" в това, че ние се случи с думата.
magic_quotes_runtime - Ако е активирано, повечето функции, които връщат данни от база данни или текстов файл, ще се върнете към екрана същото обратно наклонена черта двойни и единични кавички. Но това не е всичко! Ако допълнително включени magic_quotes_sybase директива. Само тогава избягал единични кавички, а не наклонена черта и апостроф! За щастие, тази директива може да се контролира от софтуер, по подразбиране тя е изключена, във версията 5.3.0 е отхвърлена и ще бъдат премахнати в 6.0.0.
magic_quotes_sybase - както вече бе посочено, ако тази опция е включена, тя се променя правилата на апостроф екранировка, той се записва с допълнителен апостроф вместо наклонена черта, ако magic_quotes_gpc или magic_quotes_runtime позволено. Директива може да се контролира програмно изключена по подразбиране. Никъде не е написано, че тя е отхвърлена, но PHP 6.0.0 Директивата трябва да бъде премахната.
Както при всичко това да не се побърка и да гарантира правилното боравене с кавички?
Повече от веднъж вече съм дал код магия функция. които се занимават с този проблем, през последните години той се превърна тук като:
Това означава, че директивите 2, които можете да сложите в областта на софтуера, и пуснати (с дистанционно управление грешка на оператора "@" - за бъдещите версии), третата директива се проверява и обработва "безполезните" обратни наклонени черти, когато е необходимо. Последно изпълнява стандартни функции stripslashes. въпреки че не би "опитоми" замествания, както направих аз преди:
get_magic_quotes_gpc функция може също да се не е имал причина, ограничава стандарт ini_get:
Послепис В тази функция stripslashes подход изтрива комбинацията от символи # 92; ".? Дори там, където това е необходимо, например, в изречението Как да бъдем просто съм в такива случаи, на мястото на символа" # 92; "Нейната HTML-код # 92;
Понякога трябва да се реши, че обратният проблем - прожекция на "опасен", наклонена черта. Добави наклонена черта, ако magic_quotes_gpc е изключен, можете да конфигурирате стандартните функции addslashes. Но ако magic_quotes_gpc е активирана, не е нужно addslashes - получи двойно екраниране. защото тогава addslashes функция и така автоматично се прилага към всички данни от точка. POST. и БИСКВИТКАТА.
Сега цялото примерен код, се отстранява от входните тагове, всички допълнителни интервали между символите, не зависят от настройките на цитати и се връща, цитирани под формата стана така:
(В примера не е достатъчно, отваряне и затваряне на HTML тагове). Както можете да видите, преди да издаде маркер