Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по сетям ЭВМ3.doc
Скачиваний:
26
Добавлен:
02.05.2014
Размер:
99.84 Кб
Скачать

Замена подстрок

Строковая функция, которую чаще всего используют для замены – str_replace(). Ее прототип:

string str_replace(string needle, string new_needle, string haystack);

Регулярные выражения

До сих пор действия по сопоставлению шаблонов выполнялось с использованием строковых функций. Эти действия ограничивались случаями точного соответствия строк или подстрок. В PHP сопоставление с помощью регулярных выражений больше подобно сопоставлению с помощью функции strstr(), чем сравнению на предмет равенства, поскольку выполняется сопоставление строки, находящейся где-то внутри другой строки. Например, строка “shop” соответствует регулярному выражению “shop”, “ho”, “h” и т.д. В дополнение к точному соответствию символов можно использовать специальные символы для указания метазначений. Например, с помощью специальных символов можно указать, что шаблон должен встречаться в начале или конце строки, что часть шаблона может повторяться или символы в шаблоне должны иметь конкретный тип. Рассмотрим все перечисленные случаи.

Наборы символов и классы

Использование наборов символов расширяет спектр возможностей регулярных выражений по сравнению с выражениями точного сопоставления. Фактически они являются одним из видов группового символа. Например, символ “.” можно использовать в качестве группового символа для любого другого одиночного символа, за исключением символа новой строки (регулярное выражение .at соответствует строкам “cat”, “mat” “#at” и т.д.).

Используя регулярные выражения можно точнее указывать тип символов, которые нужно сопоставлять, и можно указывать набор, к которому должен принадлежать символ. Например, если необходимо ограничить символы от a до z, можно указать [a-z].

Все, заключенное в специальные символы квадратных скобок, представляет класс символов, т.е. набор символов, к которому должен принадлежать сопоставляемый символ. Причем, заключенное в квадратные скобки выражение сопоставляется только с одиночным символом. Примеры: [aeiou] – означает любую гласную английского алфавита; [^a-z] – соответствует любому символу не относящемуся к диапазону a-z. В дополнение к наборам перечисления и диапазонам может использоваться ряд предопределенных классов символов.

Класс

Соответствие

[[:alnum:]]

Алфавитно – цифровые символы

[[:alpha:]]

Алфавитные символы

[[:lower:]]

Строчные буквы

[[:upper:]]

Прописные буквы

[[:digit:]]

Десятичные цифры

[[xdigit:]]

Шестнадцатеричные цифры

[[:punct:]]

Знаки пунктуации

[[:blanc:]]

Символы табуляции и пробелов

[[:space:]]

Любые символы свободного места

[[:cntrl:]]

Управляющие символы

[[:print:]]

Все печатные символы

[[:graph:]]

Все печатные символы, за исключением символов пробелов

Повторение

Часто требуется указать возможность наличия нескольких вхождений конкретной строки или класса символов. В регулярном выражении это можно сделать с помощью двух специальных символов. Символ * означает, что шаблон может повторяться нуль и более раз, а символ + - 1 и более раз. Например, [[:alnum:]]+ - означает “по крайней мере один алфавитно – цифровой символ”.