самая лучшая для этого функция это preg_match(). К тому же она и самая быстрая. Но вот методы построения шаблонов или так называемые регулярные выражения, которые используются в этих функциях это краеугольный камень программистов. многие вю жизнь работают кодерами и не знают их и на половину)) Но лично мне они не показались сложными, я попробую объяснить как это работает. К стати более исчерпывающую информацию по ним чем в официальной доке ПХП вы не найдете. Я именно там их и учил.
например нам надо пропустить только какие то символы
1 2 3
<?php if( preg_match('#^[тут просто пишем подряд все символы которые можно пропустить]+$#', $_POST['name'])) {
echo 'прошла';
}?>
квадратные скобки там не просто так они нужны.
символы ^ и $ обозначают начало и конец строки
символы # это просто правило регулярок. Заключайте их в кавычки и эти символы.
символ + после скобок означает что символов в строке может быть сколько угодно но не меньше одного (* - означает ноль и больше)
а сами квадратные скобки служат символьным класом точнее контейнером для него. все что между ними будет считаться разрешенными символами.
Обрати внимание что не все символы можно просто написать, некоторые имеют рабочее назначение и по этому их надо экранировать обратным слешом \.
иногда бывает быстрее перечислить что нельзя пропускать чем что можно. это можно сделать так
1 2 3
<?php if( preg_match('#^[^тут просто пишем подряд все символы которые нельзя пропустить]+$#', $_POST['name'])) {
echo 'прошла';
}?>
тут ^ внутри квадратных скобок играет роль отрицания. Другими словами - "пропустить все кроме того что прописано в этом блоке"
но это еще не все квотирование. что если пользователь напишет в посте HTML код и он так и выведется на страницу? страница может быть сьехавшей или вообще измененной. пользователь даже может внедрить скрипт. Это называется XSS - такой вид уязвимости.
что бы HTML код вывелся как простые символы надо перед выводом на экран квотить данные функцией
ну странно, я как раз думал предложить модификатор "u". А можно тогда увидеть всю регулярку? Еще стоило бы проверить чтобы весь документ был в утф. Так как модификатор "u" лишь говорит о том что обрабатывать выражения надо в юникоде(utf) а если их отправка происходит не в утф могут происходить траблы.
htmlspecialchars лиш гарантирует что HTML теги не будут работать в тексте а будут отображаться как есть. А прег матч служит для того чтобы не пропускать определенные символы. Если ты не хочешь чтобы юзеры тулили в заголовки какието определенные символы то htmlspecialchars тебе тут не поможет никак и нужно юзать прег чтобы их отловить а если тебе все равно что там будут за символы тогда прег не нужен.
htmlspecialchars лиш гарантирует что HTML теги не будут работать в тексте а будут отображаться как есть. А прег матч служит для того чтобы не пропускать определенные символы. Если ты не хочешь чтобы юзеры тулили в заголовки какието определенные символы то htmlspecialchars тебе тут не поможет никак и нужно юзать прег чтобы их отловить а если тебе все равно что там будут за символы тогда прег не нужен.
нет. просто прогоняй все данные в которых не должен работать HTML перед выводом через htmlspecialchars. А те данные в которых должен работать HTML не должны содержать этого рабочего HTML от пользователей. А то они смогут и джаву вставить туда и все что угодно и это бцдет XSS то есть уязвимость. Для этого и придумали бб коды чтобы дать возможность людям размечать текс но при этом не юзать HTML. То есть они просто юзают заранее подобранный список команд таким образом не подвергая тебя опасности.