Курилка.co.ua
Orphus RSS kurilka.co.ua

Category

Archives

PHP: альтернатива функции (function) get_meta_tags

Author wmas wmas | Category Category PHP

Здравствуйте уважаемые читатели моего блога Курилка.co.ua. В PHP существует такая функция (function) как get_meta_tags(), позволяющая считывать META-данные с той или иной страницы. Однако, работает она не всегда так, как того хотелось бы. Поэтому я решил написать альтернативное решение, с которым и хочу вас познакомить.

Начну с того, что функция (function), названная мной, get_meta_data() работает следующим образом:

  • Считывает страница, адрес которой указывается при вызове функции.
  • Полученные данные проверяются на наличие в них META-тегов.
  • Значения атрибутов name или http-equiv используются как ключи, возвращаемого функцией (function), массива META-данных.
  • Значения атрибутов content используются как значения, возвращаемого функцией (function), массива META-данных.

Другими словами: считка страницы и четыре регулярных выражения. Это позволяет достичь определённой гибкости в парсинге META-данных. Кон функции (function) выглядит следующим образом:

<?php
function get_meta_data($url) {
  $meta = array();
  $data = '';
  $fp = @fopen($url,"r");
  if ( $fp ) {
    while (!feof($fp)) $data.= fgets ($fp,4096);
    fclose ($fp);
    if ( preg_match_all("'<meta[^>](.*)>'isU", $data, $match) ) {
      foreach ( $match[1] as $m ) {
        if ( ( preg_match("'name=[\"\'](.*)[\"\']'isU",$m,$key) || preg_match("'http-equiv=[\"\'](.*)[\"\']'isU",$m,$key) ) && preg_match("'content=[\"\'](.*)[\"\']'isU",$m,$val) ) {
          $meta[strtolower($key[1])] = $val[1];
        }
      }
    }
  }
  return $meta;
}
echo '<pre>'; var_dump(get_meta_data('/'));
?>

Конечно, предложенная мной функция (function) не лишена своих недостатков. Так использование функции (function) strtolower() работает не везде или при определённых условиях. Да и проблему кодировки никто не отменяет. Впрочем, смотрите сами. Если у Вас есть более интересные предложения — пишите, буду только благодарен. Спасибо за внимание.

Publish: Понедельник Июн 1, 2009

Comments are closed.


Popular links

Copyright © since 2006 Курилка.co.ua,
powered by WordPress