Why is the thing that comes out of my echo a %s? Instead of the string I assigned?
Complete code:
IndexAction.class.php
<?php
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action {
public function index(){
$this->responseMsg();
}
public function responseMsg(){
$postStr="<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[tel]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>";
$postObj = simplexml_load_string($postStr);
$fromUsername = $postObj->FromUserName;
//echo $fromUsername;
//echo '111';
$toUsername = $postObj->ToUserName;
$time = time();
$msgType = $postObj->MsgType;
$content = $postObj->Content;
if($content=='tel'){
$indexModel=new IndexModel();
$indexModel->responseText($postObj,$content);
}
}
}
IndexModel.class.php
<?php
class IndexModel extends Model{
//回复纯文本
public function responseText($postObj,$content) {
$time=time();
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MSsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
echo "textTpl is: ".$textTpl;
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $content);
// echo $resultStr;
}
}
?>
Go to browser F12 to see the redundant xml code.
Browsers can also parse XML, you can see it by viewing the page source code
You are originally the tpl of echo, there is nothing wrong with outputting %s