извлечь заголовок тега из HTML - PullRequest
2 голосов
/ 04 апреля 2009

Я хочу извлечь содержимое тега title из строки html. Я провел некоторый поиск, но пока не могу найти такой код в VB / C # или PHP. Также это должно работать как с верхним, так и с нижним регистром, например, должен работать с <title></title> и <<code>TITLE></TITLE>. Спасибо.

Ответы [ 3 ]

7 голосов
/ 04 апреля 2009

Вы можете использовать регулярные выражения для этого, но это не полностью защищено от ошибок. Это подойдет, если вы просто хотите что-то простое (в PHP):

function get_title($html) {
  return preg_match('!<title>(.*?)</title>!i', $html, $matches) ? $matches[1] : '';
}
3 голосов
/ 04 апреля 2009

Звучит как работа для регулярного выражения. Это будет зависеть от правильности формирования HTML-кода, то есть он найдет только элемент title внутри элемента head.

 Regex regex = new Regex( ".*<head>.*<title>(.*)</title>.*</head>.*",
                          RegexOptions.IgnoreCase );
 Match match = regex.Match( html );
 string title = match.Groups[0].Value;

У меня нет моего чит-листа с регулярным выражением передо мной, так что, возможно, его нужно немного подправить. Обратите внимание, что в случае отсутствия элемента заголовка проверка ошибок также отсутствует.

0 голосов
/ 06 ноября 2013

Если в теге заголовка есть какой-либо атрибут (что маловероятно, но может произойти), необходимо обновить выражение следующим образом:

$title = preg_match('!<title.*>(.*?)</title>!i', $url_content, $matches) ? $matches[1] : '';
...