2013-09-09 3 views
-2

Я пытаюсь получить заголовок страницы из XML-фидов.PHP получение заголовка XML-файла

Я использую http://feeds.gawker.com/lifehacker/full в качестве примера и используя приведенный ниже код работает с другими сайтами, но и для Lifehacker, кажется, игнорируют закрывающий тег </title> и console.log показывает все содержимое xml корма из после открытия <title>

function getTitle($Url){ 
     $str = file_get_contents($Url); 
     if(strlen($str)>0){ 
      preg_match("/\<title\>(.*)<\/title\>/",$str,$title); 
      return $title[1]; 
     } 
    } 

$feed = 'http://feeds.gawker.com/lifehacker/full'; 
$pagetitle = getTitle($feed); 

Благодаря

ответ

1

не следует использовать регулярное выражение для разбора XML или HTML-страницы. Попробуйте это вместо этого. Простой и аккуратный:

$feed = simplexml_load_file('feed.xml'); 

var_dump((string)$feed->channel->title); 
+0

это работает, спасибо очень много! – ngplayground

+0

@Beardy Принять, если вам понравился ответ;) – silkfire

+0

Мне пришлось подождать некоторое время, чтобы принять;) сделано сейчас – ngplayground

0

Лично я бы рекомендовал не использовать регулярное выражение для анализа XML-документов. Для этого это просто не подходит.

Вместо взглянуть на SimpleXML или DOM

Теперь, что случилось с вашим регулярным выражением является то, что звезда жадная по умолчанию

preg_match("/\<title\>(.*?)<\/title\>/",$str,$title); 

получите вам, что вы после этого. Но имейте в виду, что ваш код вернет только первый элемент title в документе.

Подробнее о регулярных выражениях в этом отличный справочный

http://www.regular-expressions.info/