За последние 24 часа нас посетили 15569 программистов и 1603 робота. Сейчас ищут 838 программистов ...

Как парсить данные из meta в html

Тема в разделе "PHP для новичков", создана пользователем jackalll, 12 май 2011.

  1. jackalll

    jackalll Активный пользователь

    С нами с:
    17 фев 2011
    Сообщения:
    8
    Симпатии:
    0
    Подскажите пож. как парсить данные из meta, например discription.

    как получить title я разобрался, там проще есть теги открывающий и закрывающий

    PHP:
    1.  $html = implode("", file($url));
    2.      if (eregi ('<title>(.*)</title>', $html, $out_t))
    3.       {
    4.       echo trim($out_t);
    5.       }
     
  2. Benjamin

    Benjamin Активный пользователь

    С нами с:
    23 янв 2009
    Сообщения:
    154
    Симпатии:
    0
    Адрес:
    Тула
    jackalll, а если на странице несколько <title>...</title>?
     
  3. jackalll

    jackalll Активный пользователь

    С нами с:
    17 фев 2011
    Сообщения:
    8
    Симпатии:
    0
    не правильно написал echo trim($out_t[1]);
    берет первый
     
  4. jackalll

    jackalll Активный пользователь

    С нами с:
    17 фев 2011
    Сообщения:
    8
    Симпатии:
    0
    я примерно представляю в какую строну двигаться, надо писать регулярное выражение и по шаблону выбирать нужные данные с помощью функции preg_match_all
    Правильно?
     
  5. Benjamin

    Benjamin Активный пользователь

    С нами с:
    23 янв 2009
    Сообщения:
    154
    Симпатии:
    0
    Адрес:
    Тула
    А так
    Код (Text):
    1. <title>.фывафывафыва фы вфы вфы в <title>ф ывафыа</title> ф ывафыва</title>
    что он берет?
     
  6. jackalll

    jackalll Активный пользователь

    С нами с:
    17 фев 2011
    Сообщения:
    8
    Симпатии:
    0
    так попробуй сам, код я скинул
     
  7. jackalll

    jackalll Активный пользователь

    С нами с:
    17 фев 2011
    Сообщения:
    8
    Симпатии:
    0
    в общем вот таким способом можно получить discription

    PHP:
    1.  
    2. preg_match_all('[<meta name="description" content="(.*)" />]', $html, $out_d);
    3. $description = $out_d[1][0];
    4.  
     
  8. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Я это делаю так:
    PHP:
    1. <?php   /**
    2.          * Возвращает требуемую мету из текста.
    3.          *
    4.          * @param string $meta Какую мету брать.
    5.          * @param bool $all Брать все меты или только одну.
    6.          * @return mixed Строка с метой или массив с метами.
    7.          */
    8.         public function getMeta($meta, $all=true){
    9.             if(!$this->metaHead){
    10.                 $this->setMetaTexts();
    11.             }
    12.             $rez='';
    13.             $pattern="#<meta(?:\s*)name=$meta content='(.*?)'>#is";
    14.            
    15.             if ($all){
    16.                 $haveSome = preg_match_all($pattern, $this->metaHead, $matches);
    17.             }else{
    18.                 $haveSome = preg_match($pattern, $this->metaHead, $matches);
    19.             }
    20.            
    21.             $rez = ($haveSome) ? $matches[1] : "";
    22.             return $rez;
    23.         }