Маркетер
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
YouTube 154 Подписчики
Telegram 241 Подписчики
VK 0 Подписчиков
Маркетер
Маркетер
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
  • PHP

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

  • 30.04.2002

Автор статьи:

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

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

Самое первое, что стоит сделать, этоудалить повторяющиеся пробелы. Дляэтого в РНР есть специальная функция: 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 символов. Еще однаинтересная возможность языка РНР -перевод текста (а значит — и символьныхстрок) из одной кодировки в другую. Этоочень полезно, если нужно согласоватькодировки, например, сайта и почтовойпрограммы. Причем поддерживаются самыераспространенные русские кодировки: stringconvert_cyr_string(str, from, to);. Аргументы from и toявляются одним символом, которыйопределяет исходную и целевую кодовуютаблицу. Поддерживаемые типы:

k — koi8-r
w — windows-1251
i — iso8859-5
a — x-cp866
d — x-cp866
m — x-mac-cyrillic
Htmlspecialchars — переводит специальныесимволы в коды HTML. Htmlspecialchars( string);Определенные символы имеют особоезначение в HTML и должны быть замененыкодами HTML, если они таковые имеют. Этафункция возвращает строки спроизведенными такими изменениями.Функция полезна для отчисткиполученного от пользователя текста отразметки HTML (доски сообщений, гостевыекниги). Осуществляются следующие замены:

‘&’ (амперсанд) становится ‘&’
‘»‘ (двойные кавычки) становится ‘"’
‘<' (знак меньше) становится '<' '>‘ (знак больше) становится ‘>’
Следует отметить, что эта функция незаменяет ничего, кроме указанного выше.Для полной обработки применяют функциюhtmlentities(). Она переводит все возможныесимволы в коды HTML. Htmlentities(string); Этафункция идентична htmlspecialchars() , кроме того,что все символы, которые имеютсоответствующий код HTML, заменяются наэтот HTML код. В настоящее времяприменяется кодовая таблица ISO-8859-1.

Отдельно следует рассмотреть функциипоиска в строке. Strchr — Находит первоепоявление символа. strchr(haystack, needle); Этафункция является псевдонимом дляфункции strstr(), и полностью ей идентична.Возвращает все haystack с первого появлениястроки needle и до конца. Если параметр needleне найден, то возвращается false. Еслипараметр needle не является строкой, то онпереводится в целое число ирассматривается как числовое значениесимвола. Strrpos — Находит позициюпоследнего появления символа в строке.Strrpos(haystack, needle); Возвращает номер позициипоследнего появления символа needle встроке haystack. Следует отметить, что needle вэтом случае может быть толькоединственным символом. Если в качествепараметра needle указывается строка, тотолько первый символ будет использован.Если needle не найден, то возвращается false.Если параметр needle не является строкой,то он переводится в десятичное число ирассматривается как числовое значениесимвола. Strrchr — Находит последнеепоявление символа в строке.
Strrchr(haystack, needle); Эта функция возвращаетпозицию haystack, с которой начинаетсяпоследнее появление needle и продолжаетсядо конца haystack. Возвращает false если needle ненайдена. Если параметр needle содержитболее чем один символ, то используетсяпервый символ. Если параметр needle неявляется строкой, то он переводится вцелое число и рассматривается какчисловое значение символа. Пример:

// получение всего после последней новойстроки
$text = «Line 1\nLine 2\nLine 3″;
$last = substr( strrchr( $text, 10 ), 1 );

Strtok — разбивает строку. strtok( arg1, arg2);используется для разбиения строки. Этозначит, что если вы имеете строку типа»Как хорошо программировать», то выможете разбить эту строку на отдельныеслова, используя пробел в качестверазделителя.

$string = » Как хорошо программировать»;
$tok = strtok($string,» «);
while($tok) { echo «Word=$tok
«; $tok = strtok(«»); }

Следует отметить, что только первыйвызов функции strtok использует строковыйаргумент. Для каждого последующеговызова функции strtok необходим толькоразделитель, так как это позволяетконтролировать положение в текущейстроке. Для начала заново или дляразбития новой строки вам необходимопросто вызвать strtok с параметром строкиопять для ее инициализации. Вы можетевставлять несколько разделителей впараметр разделителя. Строка будетразделяться при обнаружении любого изуказанных символов. Также будьтевнимательны к разделителям равным»0″. Это может вызвать ошибку вопределенных выражениях.

Вот то, что понадобится Вам для работы состроками в первую очередь. Тут приведендалеко не полный перечень всехстроковых функций. Рассмотрены толькосамые основные. За подробнойинформацией я отсылаю Вас к переводуруководства по РНР всероссийского клубаWeb-мастеров, на основе данных которого инаписана эта статья. Адрес в интернете -http://www.webclub.ru/.

Алексей Волков

Предыдущий материал
  • Реклама в интернете

Я мыслю, следовательно, раскручиваю

  • 30.04.2002
  • Алексей Волков
Read More
Следующий материал
  • Управление и организация бизнеса

Тест на продажность

  • 01.06.2002
  • Алексей Волков
Read More
Вас также может заинтересовать
Read More
  • Codeigniter

Создание собственного обработчика 404 ошибок в CodeIgniter

  • jokar
  • 07.10.2012
Read More
  • PHP
  • Готовые скрипты

Загрузка нескольких файлов одним браузером

  • jokar
  • 14.06.2010
Read More
  • PHP

Переход на шаблонный дизайн

  • Алексей Волков
  • 10.02.2006
Read More
  • PHP

Экстремальный стиль для PHP

  • Алексей Волков
  • 29.12.2005
Read More
  • PHP

Секреты PHP-функций для работы с массивами. Обработка данных и сортиров

  • Алексей Волков
  • 15.11.2005
Read More
  • PHP

Секреты PHP-функций для работы с массивами. Создание массивов

  • Алексей Волков
  • 31.08.2005
Read More
  • PHP

PHP: секреты файла php.ini. Часть 4

  • Алексей Волков
  • 04.08.2005
Read More
  • PHP

PHP: секреты файла php.ini. Часть 3

  • Алексей Волков
  • 29.07.2005

Добавить комментарий

Для отправки комментария вам необходимо авторизоваться.

Свежие посты
  • Дайджест постов Сергея Людкевича
    • 12.09.24
  • Как юристы тормозят бизнес
    • 30.08.24
  • Продвижение оптовых кампаний в Яндекс Директ
    • 06.03.24
  • Cарафанное радио
    • 13.01.24
  • 5-55: История компании
    • 01.03.23
Маркетер
  • О проекте
  • Информационное спонсорство
  • Рекламным агентствам
  • Ссылки
(с) ООО "Маркетер". Официальный сайт. Маркетер: Статьи про рекламу, маркетинг, public relations, интернет

Введите ключевые слова для поиска и нажмите Enter