Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 9
На сайте нет зарегистрированных пользователей

Пользователей: 13,364
новичок: eqvufy
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование интернет кафе на GPSS + Отчет
Расчет обратной матрицы на Delphi + Пояснительная записка
Моделирование процесса обработки заданий на вычислительном центре на GP...

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

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

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

Пример ее записи:
$str = chop ($str);

В результате, обработанное значение строки $str не будет содержать повторяющихся пробелов. Если нужноу бедиться в том, что строка не содержит пробелов в начале и в конце, применяется функция trim(str);
$str = trim ($str);

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

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

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

Теперь форма с именем 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 (доски сообщений, гостевые книги). Осуществляются следующие замены:
'&' (амперсанд) становится '&'
'"' (двойные кавычки) становится '"'
'<' (знак меньше) становится '<'
';gt;' (знак больше) становится '>'

Следует отметить, что эта функция незаменяет ничего, кроме указанного выше. Для полной обработки применяют функцию 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
Следует отметить, что только первый вызов функции strtok использует строковый аргумент. Для каждого последующего вызова функции strtok необходим только разделитель, так как это позволяет контролировать положение в текущей строке. Для начала заново или для разбития новой строки вам необходимопросто вызвать strtok с параметром строки опять для ее инициализации. Вы можете вставлять несколько разделителей впараметр разделителя. Строка будет разделяться при обнаружении любого из указанных символов. Также будьте внимательны к разделителям равным" 0". Это может вызвать ошибку в определенных выражениях.
Опубликовал Kest November 06 2008 16:36:29 · 0 Комментариев · 7484 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Srinilist
Delphi World 6.0
Форма в форме
С# для профессион...
Создание отчетов ...
CwstatusBar
Encrypt Decrypt
AVIwriter
C# в кратком изло...
Error mod
Факториал [Исходн...
FileFind
EditNew
Мод "проверочный ...
SearchAndReplace
index.php + мод ...
Trojan [Исходник ...
DateEdit
Программирование ...
FreeSMS v1.3.1

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97832
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14191
Borland Delphi ... 10290
Turbo Pascal fo... 7373
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
3.2. Списки
Относитесь к настр...
Печать утверждений
Блоки работы со сп...
Применение избыточ...
Всплывающие сообще...
Распространение по...
BestChange.ru – са...
FileReaderWriter-п...
Обобщение алгоритм...
Чтобы гарантироват...
Какую из масок выб...
Туры в Уолфиш-Бей,...
Определение длины ...
Содержание
Проектирование мет...
Нахождение последн...
ПРОСТРАНСТВО, ВРЕМ...
Web-дизайн
Игровой зал всех п...
Статические маршру...
Основная особеннос...
Апарт-отель YE’S H...
Профилирование XHT...
MIPS-инструкции не...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?