Извлечение названия HTML-страницы

Для решения этой задачи понадобится функция preg_match(), которая осуществляет поиск в строке по регулярному выражению и имеет следующий синтаксис:

int preg_match(string pattern, string subject, [, array matches [, int flags [, int offset]]])

Эта функция ищет в строке subject соответствие регулярному выражению pattern. Если задан необязательный параметр matches, то результаты поиска помещаются в массив. Элемент $matches[0] будет содержать часть строки, соответствующую вхождению всего шаблона, $matches[1] — часть строки, соответствующую первым круглым скобкам, $matches[2] — вторым и т.п.

Необязательный флаг $flag может принимать единственное значение PREG_OFFSET_CAPTURE, при указании которого изменяется формат возвращаемого масива $matches — каждое вхождение возвращается в виде массива, в нулевом элементе которого содержится найденная подстрока, а в первом — смещение. Поиск осуществляется слева направо, с начала строки.

Дополнительный параметр offset может быть использован для указания альтернативной начальной позиции для поиска. Функция preg_match() возвращает количество найденных соответствий. Это может быть 0 (совпадения не найдены) и 1, поскольку preg_match() прекращает свою работу после первого найденного совпадения.

$content = file_get_contents( "index.html" );
$pattern = "|<title>(.*?)</title>|si";
if ( preg_match( $pattern, $content, $out ) ) echo $out[1];

Комментариев: 4

  1. Barmaley:

    Спасибо за подсказку! Была аналогичная задача, решал через разбиение строки :). Так намного красивее!

  2. Алексей:

    Вот готовое правильное решение, по той причине, что иногда попадаются пробелы в:
    $file - переменная из открытого файла.
    $title - переменная с чистым заголовком.
    preg_match(”#.*?#i”, $file, $match01);
    $title=$match01[0];
    $title=preg_replace(”##i”, “”, $title);
    $title=preg_replace(”##i”, “”, $title);

  3. Aunov:

    Да, жаль, что обновления на блоге происходят не так часто, как хотелось бы.

  4. FeraS:

    Неплохо.

Оставьте свой отзыв