Разбор BlogId из Blogspot.com в PHP с использованием Regex - PullRequest
0 голосов
/ 16 февраля 2010

Как я могу получить blogid от данного URL-адреса blogspot.com? Я посмотрел исходный код веб-страницы с сайта blogspot.com, он выглядит следующим образом

<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.blogger.com/rsd.g?blogID=4899870735344410268" />

как я могу разобрать это, чтобы получить номер 4899870735344410268

Ответы [ 2 ]

2 голосов
/ 16 февраля 2010

Используйте DOMDocument для анализа документа, а затем используйте его методы для извлечения нужного элемента.

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

function getBlogId($url) {
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  $page = curl_exec ($ch);
  curl_close($ch);

  $doc = new DOMDocument();
  @$doc->loadHTML($page);

  $links = $doc->getElementsByTagName('link');

  foreach($links as $link) {
    $rel = $link->attributes->getNamedItem('rel');

    if($rel && $rel->nodeValue == 'EditURI') {
      $href = $link->attributes->getNamedItem('href')->nodeValue;
      $query = parse_url($href, PHP_URL_QUERY);

      if($query) {
        $queryComp = array();
        parse_str($query, $queryComp);

        if($queryComp['blogID']) {
          return $queryComp['blogID'];
        }
      }
    }
  }

  return false;
}

Пример использования:

$id = getBlogId('http://thehouseinmarrakesh.blogspot.com/');
echo $id; // 483911541311389592
0 голосов
/ 16 февраля 2010
$pageContents = file_get_contents('blospot_url');
preg_match('~<link rel="EditURI" type="application/rsd\+xml" title="RSD" href="http://www.blogger.com/rsd.g\?blogID=([0-9]+)" />~', $pageContents, $matches);
echo $matches[1];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...