<? //считываем файл в строку $str = file_get_contents('1.htm'); $pattern = "!^<[^/]+>!mU"; // осуществляем поиск $n = preg_match_all ($pattern, $str, $res); // выводим результаты for ($i=0;$i<$n;$i++) echo htmlspecialchars($res[0][$i]). "<br>"; ?>
\ | Переходный символ со множеством назначений |
^ | Объявляет начало объекта (или строки в многострочном режиме). То есть этот символ определяет, что искомый текст должен находиться в начале строки. Альтернатива: «\A» |
$ | Объявляет конец объекта (или строки в многострочном режиме). То есть этот символ определяет, что искомый текст должен находиться в конце строки. Альтернативы: «\Z», «\z» |
. | Совпадает с любым символом, кроме символа перевода строки (по умолчанию) |
[ | Начинает определение символьного класса |
] | Заканчивает определение символьного класса |
| | Разделяет перечисление альтернативных вариантов |
( | Начинает подшаблон регулярное (подвыражение) |
) | Заканчивает подшаблон |
? | Расширяет значение «(», квантификаторов 0 или 1, и квантификатор минимизации |
* | 0 или больше повторений (квантификатор) |
+ | 1 или больше повторений (квантификатор) |
{ | Начинает минимальный/максимальный квантификатор |
} | Заканчивает минимальный/максимальный квантификатор |
Шаблон ограничен восклицательными знаками. Первая «^» значит, что мы ищем совпадения в начале строк, потом идет символ «<» – его и ищем в строке, после него должно идти все, что угодно, кроме обратного слэша (конструкция «[^\]» ), «+» говорит, что стоящий перед ним символ повторяется один и более раз и заканчивается все это символом «>». Таким образом, выделяются все теги в начале строк.
<? //считываем файл в строку $str = file_get_contents('1.htm'); $pattern = "!\s[А-Яа-я]+". "\s([А-Я]\.\s*)([А-Я]\.\s*)$!m"; // шаблон ограничен восклицатель- // ными знаками, m – модификатор, // включающий многострочный режим // первый \s означает, что перед // фамилией должен идти пустой // символ (например, пробел) // [А-Яа-я] задает одну из букв // алфавита в любом регистре,а в // комбинации со знаком плюс // определяет,что эта буква // повторяется один и более // раз следующий \s означает, что // между фамилией и инициалами // должен быть пробел // Далее идет подвыражение, // определяющее инициалы. // Это буква от А до Я, после // которой стоит точка ('\.') // Экранируем точку, чтобы // избавиться от ее специального // значения. После буквы с точкой // может идти или не идти пробел // или несколько. Вся конструкция // повторяется минимум два раза. // Последний символ $ означает, // что фамилия с инициалами // должны находиться в конце // строки. //осуществляем поиск $n = preg_match_all ($pattern, $str, $res); // выводим результаты for ($i=0;$i<$n;$i++) echo htmlspecialchars($res[0][$i]). "<br>"; ?>