PHP:不附加字符串

时间:2010-08-16 15:02:39

标签: php api

我正在构建一个用curl执行的url。该网址将为我正在使用的LMS调用api。在能够调用任何其他内容之前,您需要从LMS接收令牌以放入URL。我从api获得了令牌,我可以回复它并且它显示得很好,当我在将令牌附加到它之后回显url时,它没有显示出来。

curl_setopt($c, 'CURLOPT_RETURNTRANSFER', true);
$res = curl_exec($c);
curl_close($c);

$start = strpos($res,"<token>");
$end = $start+37;
$token = substr($res,$start+7,$end-$start);

echo "{$token}<br />";

$url = "/www/api2.php?action=create_user";
$url .= "&login=" . urlencode($username);
$url .= "&password=" . urlencode($password);
$url .= "&name=" . urlencode($data['first_name']);
$url .= "&surname=" . urlencode($data['last_name']);
$url .= "&email=" . urlencode($email);
$url .= "&languages=english";
$url .= "&token=" . $token;

echo "{$url}<br />";

echo "{$url}<br />";

的输出
  

/www/api2.php?action=create_user&login=foobar3130&password=6116b3f29c&name=Foo&surname=Bar&email=foobar%40gmail.com&languages=english&token =

echo "{$token}<br />";

的输出
  

pUCu2BUAE1heAyQ93fApfhvDE1bjKd

修改 我添加了一个检查以查看$start是否为false,并且它是错误的。我猜它实际上并不是得到回声的令牌,因为如果我注释掉该行,那么我对令牌输出的字符串仍会被打印出来。我不确定它会是什么。

编辑2 我现在让它返回xml,但我不知道如何解析它来获取令牌。它返回:

<xml><token>Fp1rYkds4fSuTAQxTvLvSiW5NE2FJz</token></xml>

3 个答案:

答案 0 :(得分:3)

您的编辑似乎确认curl_exec()没有将数据返回给您 - 它将其直接发送到浏览器。使用选项CURLOPT_RETURNTRANSFER让它将值返回到变量。

答案 1 :(得分:1)

尝试:

ob_start();
echo "/www/api2.php?action=create_user";
echo "&login=" . urlencode($username);
echo "&password=" . urlencode($password);
echo "&name=" . urlencode($data['first_name']);
echo "&surname=" . urlencode($data['last_name']);
echo "&email=" . urlencode($email);
echo "&languages=english";
echo "&token=" . $token;
$url=ob_get_contents();
ob_end_clean();

echo $url;

答案 2 :(得分:1)

根据脚本显示的内容,您尝试从XML结果中解析令牌,其固定宽度为37个字符。

从您的最新评论来看,这就是问题所在。

更好的方法是使用实​​际的XML DOM parsing从文件中获取令牌。