php切换不处理变量

时间:2014-01-05 03:43:38

标签: php switch-statement openfire

我遇到了一个问题,我现在无法解决7个小时。

这是我在openfire服务器上创建用户的php脚本:

$f = fopen("LINK","r");
$odpoved = fread($f, 1024);
写入手册http://www.igniterealtime.org/projects/openfire/plugins/userservice/readme.html中的

,我的变量应该包含“OK”或“UserAlreadyExistsException”。当我尝试打印$ odpoved时,它表现良好,当我查看该页面的源代码时,它包含手动编写的标签。我的问题是,为了上帝的缘故,我找不到在交换机中使用这个变量的方法。这就是它现在的样子:

switch($odpoved){
    case 'OK':
        print("something");
        break;
    case 'UserAlreadyExistsException':
        print("something2");
        break;
    default:
        print("X");
}
fclose($f);

无论我做什么,它总是打印默认。我不明白它有什么问题。我已经尝试将它与带有标签的选项进行比较,但它没有帮助,它总是默认为最终。 请你帮帮我吗?感谢您的帮助,如果需要,我会提供更多详细信息。

2 个答案:

答案 0 :(得分:1)

  

服务器将使用XML结果页面回复所有用户服务请求。如果请求被成功处理,则返回将是“result”元素,文本正文为“OK”。如果请求不成功,则返回将是一个“error”元素,其文本正文为以下错误字符串之一。

输出是一个XML文件,所以你正在看的是使用XML解析器来获取结果元素。 simplexml会将它加载到一个数组中(因为这个xml页面很小,你不必担心性能,所以更复杂的xml解析器不值得麻烦)

$output = simplexml_load_string($odpoved) 
switch($output->result) //check $odpoved to make sure the XML structure matches

或者,您也可以使用simplexml_load_file传递URL 输出将是相同的。

有关详细信息,请参阅:http://www.sitepoint.com/parsing-xml-with-simplexml/

答案 1 :(得分:0)

你的switch语句对我来说很好。我会质疑变量$odpoved中的内容。使用var_dump($odpoved)查看其中包含的内容,并确保检查前导空格和尾随空格或隐藏字符(换行符有时很难发现)。

对于switch语句分析,请查看http://www.php.net/manual/en/control-structures.switch.php