PHP если заявление - PullRequest
       7

PHP если заявление

0 голосов
/ 15 марта 2011

Я использую класс Twitter для публикации обновлений в своей учетной записи. Я удалил свои учетные данные в Twitter, поэтому я знаю, что XXXXX неверно.Я могу разобрать текст из удаленного XML-файла.Этот текст XML-файлов всегда гласит «Нет активных кодов».Так что в моем заявлении if я сказал, что если в xml-файле написано «Нет активных кодов».я не хочу публиковать что-либо в своем твиттере, но если это изменится на что-то еще, я бы хотел проанализировать эту информацию и опубликовать ее в своем твиттереПоэтому сегодня, когда произошло обновление XML-файла, ничего не произошло.Я знаю, что твиттерная часть верна, потому что у меня есть похожий скрипт, который не использует оператор if, и он хорошо публикуется.После того, как я представил утверждение if, я столкнулся с проблемой невозможности опубликовать.Итак, что я могу сделать, чтобы публиковать сообщения в Твиттере, только когда XML-файл меняется с «Нет активных кодов».к чему-либо еще?

// Parse Message
$source = file_get_contents('WEBSITE_URL_GOES_HERE');
$dom = new DOMDocument();
@$dom->loadHTML($source);
$xml = simplexml_import_dom($dom);
$match = $xml->xpath("//code_message");


//Twitter class (Updating status)
require_once 'twitteroauth.php';
//Twitter credentials
define("CONSUMER_KEY", "XXXXXX");
define("CONSUMER_SECRET", "XXXXXX");
define("OAUTH_TOKEN", "XXXXXX-XXXXXX");
define("OAUTH_SECRET", "XXXXXX");
// Verify credentials
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_SECRET);
$content = $connection->get('account/verify_credentials');


//If Statement
if ( $match[0] == "There are no active codes." ) {
    /* Do Nothing */;
} else {
    $connection->post('statuses/update', array('status' => 'New Code Available - ' . $match[0] ));
    return $connection;
}

var_dump массива $ match:

array(1) { [0]=> object(SimpleXMLElement)#3 (1) { [0]=> string(32) "There are no active codes." } }

Ответы [ 2 ]

0 голосов
/ 15 марта 2011

Почему бы вам просто не добавить код отладки и проверить, что происходит?Эхо тебе $match[0] и проверь что там.Трудно представить, что «если» сломается, не так ли?Может быть var_dump($match) просто чтобы проверить, что происходит.Тогда вам, вероятно, следует либо исправить ваше условие, либо исправить получение $ match.

Проверьте ваш массив: элемент [0] является объектом, а не строкой.Вам нужно получить первый элемент этого объекта, если вы знаете, что я имею в виду.

Вы сравниваете:

Object(SimpleXMLElement)#3 (1) { [0]=> string(32) "There are no active codes." } 

с

"There are no active codes."

Что очевидноне то же самое.

Я не могу проверить это отсюда, но ознакомьтесь с руководством по simpelXMLElement: http://php.net/manual/en/class.simplexmlelement.php

Вероятно, вам следует уйти с помощью простого вызова.Просто посмотрите, какой у вас объект.Простым примером будет что-то вроде «$ match [0] -> childname», но я не могу быстро увидеть, что такое childname.Изучите руководство для некоторого вида getchild или чего-то, не должно быть слишком хитрым

0 голосов
/ 15 марта 2011

Возможно, вам следует использовать функцию сравнения строк. как strcmp: http://php.net/manual/en/function.strcmp.php

if (strcmp($match,"There are no active codes.") != 0 )
{
    $connection->post('statuses/update', array('status' => 'New Code Available - ' . $match[0] ));
    return $connection;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...