@Panzers

Как проще написать удаление пробелов, тегов, и преобразование в нижний регистр?

Всем привет!
Есть код:
$pin = strtolower($_POST['crankpin-1'].$_POST['crankpin-2'].$_POST['crankpin-3'].$_POST['crankpin-4']);

$arr = str_replace('/\s/','',str_split($pin));

echo '<pre>';
print_r($arr);
echo '</pre>';

Вопросов несколько:
1) Как мне кажется, тут что то не так (громоздко что ли..), оно конечно и работает, но может есть проще варианты?
2) В форме 4 инпута текстовых, каждый ограничен в 4 символа. Соответственно в обработчик приходит 16 символов в целом. Далее нужно удалить пробелы, перевести все в нижний регистр, и разбить в массив. Все вроде бы неплохо, но если удаляем пробелы, то в массиве на выходе уже 17 символов. Wtf? Потому что дальше по коду нужно будет выдергивать из xml файла данные, а массив уже выходит косячный для выборки :(
3) Чем отфильтровать лучше вообще данные из формы по посту? На предмет тегов и прочего лишнего, там только буквы и числа и все нужно.
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
во первых - загадочная строка с $arr = str_replace('/\s/','',str_split($pin)); будет работать весьма неоднозначно, хотя бы по тому что str_split() не поддерживает работу с мультибайтовыми кодировками. Во вторых она там конечно же нафиг не нужна, так как str_replace() работает со строками в третьем аргументе, но зато не работает с регулярными выражениями в первом, по этому эта строка у вас вообще никак не работает. В остальном все вполне в лучших традициях бредогенераторов.

Коротко: Если у вас есть поля определенных типов - проверяйте их отдельно на совпадение нужным типам, для этого есть фильтры и хелперы. Экономия на буквах была актуальна в 17 веке, когда бумага дорогая была.
Ответ написан
Комментировать
@marmuff
По регистрам - есть в пыхе уже реализованные ф-ии для преобразования строк в lower case и UPPER CASE.
Для удаления пробелов и тэгов - регулярки к Вашим услугам.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы