Захват Twitter-друзей с помощью PHP и cURL - PullRequest
1 голос
/ 07 августа 2010

Итак, в соответствии с моим последним вопросом, я работаю над тем, чтобы почистить ленту друзей из Twitter.Я следовал руководству, чтобы написать этот сценарий, в значительной степени шаг за шагом, поэтому я не совсем уверен, что с ним не так, и я не вижу никаких сообщений об ошибках.Я никогда не использовал cURL до сохранения из оболочки, и я очень плохо знаком с PHP, поэтому, пожалуйста, потерпите меня.

<html>
<head>
<title>Twitcap</title>
</head>
<body>
<?php
  function twitcap()
  {
    // Set your username and password
    $user = 'osoleve';
    $pass = '****';

    // Set site in handler for cURL to download
    $ch = curl_init("https://twitter.com/statuses/friends_timeline.xml");

    // Set cURL's option
    curl_setopt($ch,CURLOPT_HEADER,1); // We want to see the header
    curl_setopt($ch,CURLOPT_TIMEOUT,30); // Set timeout to 30s
    curl_setopt($ch,CURLOPT_USERPWD,$user.':'.$pass); // Set uname/pass
    curl_setopt($ch,CURLOPT_RETURNTRANSER,1); // Do not send to screen

    // For debugging purposes, comment when finished
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);

    // Execute the cURL command
    $result = curl_exec($ch);

    // Remove the header
    // We only want everything after <?
    $data = strstr($result, '<?');

    // Return the data
    $xml = new SimpleXMLElement($data);
    return $xml;
  }

  $xml = twitcap();
  echo $xml->status[0]->text;
?>
</body>
</html>

Ответы [ 2 ]

1 голос
/ 07 августа 2010

Разве вам не нужно все после "?>"?

$data = strstr($result,'?>');

Кроме того, вы используете бесплатный веб-хостинг?Однажды у меня возникла проблема, когда мой хостинг-провайдер заблокировал доступ к Твиттеру из-за спама.

0 голосов
/ 07 августа 2010

обратите внимание, что если вы используете strstr, строка возвратного файла будет фактически включать строку иглы. так что вы должны удалить первые 2 символа из строки

Я бы лучше порекомендовал сочетание функции substr и strpos!

всегда, я думаю, что simplexml должен быть в состоянии обработать этот заголовок, то есть я думаю, что этот шаг не нужен!

Более того, если я открою URL, я не вижу заголовок как! и если strstr не находит строку, она возвращает false, поэтому у вас нет данных в текущем скрипте

вместо $data = strstr($result, '<?'); попробуйте это:

if(strpos('?>',$data) !== false) {
$data = strstr($result, '?>');
} else {
$data = $result;
}
...