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

Статья - Компьютеры, программирование

Другие статьи по предмету Компьютеры, программирование

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

Андрей Кухарчик

Одной из наиболее часто встречающихся задач в программировании является обработка символьных последовательностей. Если проще строк. Как это делается на языке гипертекстового препроцессора РНР и есть тема этой статьи.

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

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

$str= chop ($str);

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

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

Теперь форма с именем form ограничена в количестве вводимых символов числом 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(). Примеры:

$str = str_replace("", "n", $str); // вырезается символ ввода.

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

Следующая важная и полезная функция нахождение длинны строки. Синтаксис - strlen(string str);Пример $a = strlen(“qwerty”);. В переменной $a будет число 6, так как длинна строки 6 символов. Еще одна интересная возможность языка РНР перевод текста (а значит и символьных строк) из одной кодировки в другую. Это очень полезно, если нужно согласовать кодировки, например, сайта и почтовой программы. Причем поддерживаются самые распространенные русские кодировки: string convert_cyr_string(str, from, to);. Аргументы f