2011-03-15 194 views
0

我正在使用twitter类将更新发布到我的帐户,因为我已经删除了我的twitter凭据,所以我知道XXXXX是错误的。我能够解析来自远程xml文件的文本。这个XML文件文本总是显示“没有活动代码”。所以在我的if语句中,我说如果xml文件显示“没有活动代码”。我不想发布任何东西给我的Twitter,但如果它改变到其他任何东西,然后我想解析这些信息并将其发布到我的Twitter。所以今天当xml文件有更新时,什么都没有发生。我知道推特部分是正确的,因为我有一个类似的脚本,不使用if语句,它发布很好。一旦我介绍了if语句,我遇到了无法发布的问题。那么,只有当xml文件从“没有活动代码”更改时,我才能发布到twitter。到其他任何东西?php if语句

// 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的$匹配数组:

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

我可以看看匹配数组吗? – 2011-03-15 06:33:29

+0

@samir chauhan array(1){[0] => object(SimpleXMLElement)#3(1){[0] => string(32)“没有活动代码。” }} – jennifer 2011-03-15 06:39:19

+0

这就是评论意味着什么。 – markus 2011-03-15 06:39:36

回答

0

你应该使用字符串比较功能。 喜欢的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; 
} 
+0

我在帮助Twitter垃圾邮件机器人吗? – 2011-03-15 06:30:04

+0

谢谢!我会试试看。 – jennifer 2011-03-15 06:32:47

0

你为什么不只是添加一些调试代码,并检查这是怎么回事?回声你$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”,但我不能很快看到这个孩子名字是什么。查看一些getchild什么手册,不应该太棘手

+0

array(1){[0] => object(SimpleXMLElement)#3(1){[0] => string(32)“没有活动代码。” }} – jennifer 2011-03-15 06:38:50

+0

啊,那么,你在那里:) – Nanne 2011-03-15 06:48:14

+0

是否有可能从一个主体转换为字符串? – jennifer 2011-03-15 06:50:47