Регулярное выражение /\d\d/m может быть сопоставлено следующим подстрокам: 11, 22, 33. Если в начале РВ стоит ^, то совпадения ищутся в начале строки, поэтому выражение /^\d\d/m найдет только 11.
Когда в конце РВ стоит знак доллара $, поиск производится в конце строки, поэтому выражение /\d\d$/m найдет только 33.
Шаблону же /^\d\d\d$/ будет удовлетворять строка, целиком состоящая из трехзначного числа (т.е. она и начинается и заканчивается этим числом).
<? //считываем файл в строку $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 или больше повторений (квантификатор) |
{ | Начинает минимальный/максимальный квантификатор |
} | Заканчивает минимальный/максимальный квантификатор |
Шаблон ограничен восклицательными знаками. Первая «^» значит, что мы ищем совпадения в начале строк, потом идет символ «<» – его и ищем в строке, после него должно идти все, что угодно, кроме обратного слэша (конструкция «[^\]» ), «+» говорит, что стоящий перед ним символ повторяется один и более раз и заканчивается все это символом «>». Таким образом, выделяются все теги в начале строк.