Виртуальный Брест
Главная Портал Форум Рассылки Контакт Для клиентов Статьи

Экскурсии в Европу, из Бреста!
Экскурсии в Европу, из Бреста!
 
Баня открыта и ждет посетителей!
Баня открыта и ждет посетителей!
 
 

Виртуальный хостинг - дом для вашего сайта - лучшее предложение в Бресте!


Полный список глав книги

Обработка строк в РНР


Если Вы присваиваете переменной нужное значение, то оно, как правило, не нуждается в обработке, так как программист делает присвоение в коде программы, и конечно, в нужном виде. Но если строка считывается из файла, или получается посредством формы, она (символьная строка) нуждается в обработке.

Самое первое, что стоит сделать, это удалить повторяющиеся пробелы. Для этого в РНР есть специальная функция: chop(str); Пример ее записи:

$str = chop ($str);

В результате, обработанное значение строки $str не будет содержать повторяющихся пробелов. Если нужно убедиться в том, что строка не содержит пробелов в начале и в конце, применяется функция  trim(str); ( $str = trim ($str); ). Когда требуется удалить пробелы только с начала строки, нужно использовать ltrim. И если уж зашла речь о начале строки, давайте убедимся, что первый символ заглавный. Что бы сделать его таковым, примените  ucfirst(str);. Каким бы он ни был раньше, после обработки этой функцией он станет именно заглавным.

Есть и функция для перевода во всех словах в строке их первых букв в заглавные - ucwords(str);. Кроме того, очень часто бывает необходимо сравнить строку с некоторым шаблоном. Частный случай – поиск в строке (о нем несколько позже). Но нет никакой гарантии, что полученная строка введена пользователем или получена из файла в соответствии с правилами правописания. Другими словами – строка может содержать в середине слова или предложения, чередующиеся заглавные и прописные символы. Решение данной проблемы – в применении функций strtolower(str); и strtoupper(str);. Эти функции, соответственно, переводят символьные строки в нижний и верхний регистр. Комбинирование данных возможностей языка РНР приводит к корректному построению строки не зависимо от того, как она была введена или получена в начальном виде.

Такие возможности применяются, в частности, при проверке на соответствие Логинов и паролей. Это не дает посетителям возможности использовать хитрые комбинации из маленьких и больших букв для создания похожих логинов.

Еще одна необходимая вещь при работе со строками – их обрезка. Часто она применяется при обработке форм для ввода данных. Представьте, что кто-нибудь из Ваших «доброжелателей»  введет в Вашу гостевую книгу текст этой книги. Как думаете, что получится? Правильно, последующий вывод на экран даст возможность всем читателям гостевой ознакомиться с ним. Что, в принципе не плохо для меня, но не для Вас. Вот для того, что бы избегать подобной ситуации, и нужно ограничить количество вводимых символов в любом поле формы. Тем более что делается это очень просто. Для начала, нужно прописать ограничение в самой форме:

<input maxlength="100" name="form">

Теперь форма с именем form ограничена в количестве вводимых символов числом 100. Но это еще далеко не все. Дело в том, что обойти такое ограничение очень просто, и нужно оно скорее для того, что бы показать посетителю предел ограничения. Могу даже подсказать примерно как, что бы Вы не сомневались в моих словах. Надо сделать точно такую же страничку (благо, просмотреть ее код легко в любом браузере), сохранить ее у себя на диске с расширением .html, не забыв сменить число 100 на нужное и запустить со своего компьютера. Серверу то все равно, откуда получать информацию, если не проверять это в коде, и он нормально воспримет такую подставу и обработает полученные данные. Таким образом вывод – проверять откуда именно идет ввод и каков размер полученных данных уже потом, в обработчике.

Для этого нужно воспользоваться функцией РНР $form =substr($form,0,99);. Этим вы просто отрезаете часть полученной строки, превышающую 100 символов (стоит цифра 99, так как счет символов начинается с нуля). Теперь все потуги Ваших знакомых завалить Вас информацией будут тщетны, так как Ваш умный скрипт не пропустит больше определенного Вами количества символов.

Собственно говоря, у функции substr(string, start, length); совсем другое предназначение. Она возвращает часть строки string, определяемую параметрами start (начало) и length (длина). Если параметр start положительный, то возвращаемая строка будет начинаться с start-ого символа строки string. Примеры:

$form = substr("abcdef", 1); // вернет "bcdef"
$form = substr("abcdef", 1, 3); // вернет "bcd"

Если параметр start отрицательный, то возвращаемая строка будет начинаться start-ого символа от конца строки string. Примеры:

$rest = substr("abcdef", -1); // вернет "f"
$rest = substr("abcdef", -2); // вернет "ef"
$rest = substr("abcdef", -3, 1); // вернет "d"

Если параметр length указан и он положительный, то возвращаемая строка закончится за length символов от начала start. Это приведет к строке с отрицательной длиной (потому что начало будет за концом строки), поэтому возвращаемая строка будет содержать один символ от начала строки start. Если length указан и он отрицательный, то возвращаемая строка закончится за length от конца строки string. Это опять приведет к строке с отрицательной длиной, поэтому возвращаемая строка будет содержать один символ от начала строки start. Примеры:

$rest = substr("abcdef", -1, -1); // вернет "bcde"
 

Вот такая полезная функция.

Кроме нее, при обработке данных формы очень важно уметь вырезать из полученной строки лишние или просто недопустимые символы. Можно в этом случае применить специальную функцию, которая заменяет все вхождения строки needle в строке haystack на указанную строку str. Эта функция записывается так: str_replace(needle, str, haystack);. Если вам не требуются причудливые правила замены, то вам следует всегда использовать эту функцию вместо ereg_replace(). Последняя хоть и более функциональна, но зато исполняется явно дольше, и в большом цикле, например, приведет к ощутимым потерям времени. А тут немного, там немного, и потом говорят, что PHP работает медленно, хотя сами же в этом и виноваты. Оптимизируйте свой код не только для удобочитаемости, но и для уменьшения времени работы скрипта.

Примеры:

$str = str_replace("", "\n", $str); // вырезается символ ввода.
$str = str_replace("red", "black", $str); // в строке черный цвет будет заменен на красный.

Вообще – функция эта наиболее любима лично мной, и с ее помощью я часто делаю многие полезные вещи. Не сомневаюсь, Вы тоже сможете найти ей разные полезные применения.

Читать еще...



Итан Маркотт

Отзывчивый веб-дизайн
О чем эта книгаИнтернет бесповоротно вышел за границы мира стационарных компьютеров, и сегодня можно с уверенностью сказать, что в течение нескольких лет лидирующей формой доступа...

Итан Маркотт

Отзывчивый веб-дизайн
О чем эта книгаИнтернет бесповоротно вышел за границы мира стационарных компьютеров, и сегодня можно с уверенностью сказать, что в течение нескольких лет лидирующей формой доступа...

Джеф Джонсон

Умный дизайн. Простые приемы разработки пользовательских интерфейсов
Неправильно спроектированный интерфейс может погубить любой интернет-проект. Но для того чтобы разработать совершенный пользовательский интерфейс, необходимо быть...

Линн Бейли, М. Моррисон

Изучаем PHP и MySQL
Вы хотите уметь создавать не только статичные, но и динамичные, связанные с базами данных сайты? Тогда вам не обойтись без знания РНР и MySQL. Эта книга является уникальным...

    Информация

Главная - переход на начало
Тарифы на Российский хостинг
Правила - что можно а что нет
Заказ - сделайте это сейчас
Выбор домена - найди свое имя
Регистрация домена - купить
Оплата - варианты для всех
Панель управления Россия
Панель управления Беларусь
Вопросы и ответы - информация
Разработка сайтов - сопровождение
Виртуальный Брест - портал
Контакт - обратная связь
Наш форум - пообщаемся?
купить коттедж Поварово
женская одежда оптом от производителя.
Список доменов
в которых доступна бесплатная регистрация имен при покупке хостинга, а так же открытие поч- тового ящика: набор для капучино

Новости Бреста:

Второй порыв теплосетей в Бресте - двенадцать многоэтажных домов и один детский сад остались без тепла
Почти тонну мёда задержали налоговики при проверке в Бресте
Зарплата в конвертах в Бресте - видео
Трое жителей Кавказа в "поисках работы" забрались прямо в лес в пограничную зону
Профилактика квартирных краж - важно
Современный животноводческий комплекс на 1500 голов строится в СПК "Королевский" Кобринского района - фото
Результаты проходящей на территории Брестской области акции "Не упусти свой шанс"
Осенний месячник по наведению порядка на земле проходит на Брестчине - важно
В Лунинецком районе в водоеме нашли автомобиль с телом внутри
ГАИ: брестчанин решил стать маршрутчиком и в пьяном состоянии вез горожан

© Виртуальный Брест 2001 - 2009 Автор проекта: Андрей Кухарчик Дизайн: Partgraphic