2012-09-27 54 views
1

我在使用wordpress xml-rpc api時遇到了問題。我的代碼從xml獲取一些數據併發布到博客。頁面標題貼出來,博客上沒有問題,但是自定義字段被打破。通過wordpress xmlrpc api發佈自定義字段時的編碼問題

代碼文件,XML,博客設置和數據庫表,它們都是UTF-8編碼。

function wpPostXMLRPC($title,$body,$rpcurl,$username,$password,$thumbnail,$cfields,$category,$keywords='',$encoding='UTF-8') { 

$title = html_entity_decode(htmlentities($title,ENT_NOQUOTES,$encoding)); 
$body = html_entity_decode(htmlentities($body,ENT_NOQUOTES,$encoding)); 
$keywords = html_entity_decode(htmlentities($keywords,ENT_NOQUOTES,$encoding)); 
array_walk($cfields,arr_encoding); // this function does the same thing with above 

$content = array(
    'title'=>$title, 
    'description'=>$body, 
    'mt_allow_comments'=>0, // 1 to allow comments 
    'mt_allow_pings'=>0, // 1 to allow trackbacks 
    'post_type'=>'post', 
    'mt_keywords'=>$keywords, 
    'categories'=>array($category), 
    'custom_fields' => $cfields 
); 

$params = array(0,$username,$password,$content,true); 
$request = xmlrpc_encode_request('metaWeblog.newPost',$params); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $request); 
curl_setopt($ch, CURLOPT_URL, $rpcurl); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 100); 
curl_setopt($ch, CURLOPT_ENCODING, "UTF-8"); 
$results = curl_exec($ch); 
if(curl_errno($ch)) 
    echo '<hr>curl error:'.curl_error($ch)."<hr>"; 
curl_close($ch); 
return $results;} 

,這是arr encoding功能:

function arr_encoding($cfields){ 
if(is_array($cfields)) 
    array_walk($cfields, 'arr_encoding'); 
else if(is_string($cfields)) 
    $cfields = html_entity_decode(htmlentities($cfields,ENT_NOQUOTES,"UTF-8"));} 

你有什麼想法?

回答

1

OK,那就是:

不要使用

xmlrpc_encode_request('blogger.newPost',$params); 

及用途:

xmlrpc_encode_request('blogger.newPost',$params, 
          array('encoding'=>'UTF-8','escaping'=>'markup')); 
相關問題