PHP如何屏蔽API返回的文字,PHP实现自动识别RestfulAPI的返回内容类型_php技巧

如题,PHP如何自动识别第三方Restful API的内容,自动渲染成 json、xml、html、serialize、csv、php等数据?

其实这也不难,因为Rest API也是基于http协议的,只要我们按照协议走,就能做到自动化识别 API 的内容,方法如下:

1、API服务端要返回明确的 http Content-Type头信息,如:

Content-Type: application/json; charset=utf-8

Content-Type: application/xml; charset=utf-8

Content-Type: text/html; charset=utf-8

2、PHP端(客户端)接收到上述头信息后,再酌情自动化处理,参考代码如下:

输出

$autoDetectFormats = array(

'application/xml' => 'xml',

'text/xml' => 'xml',

'application/json' => 'json',

'text/json' => 'json',

'text/csv' => 'csv',

'application/csv' => 'csv',

'application/vnd.php.serialized' => 'serialize'

);

if (strpos($contentType, ';'))

{

list($contentType) = explode(';', $contentType);

}

$contentType = trim($contentType);

if (array_key_exists($contentType, $autoDetectFormats))

{

echo '_' . $autoDetectFormats[$contentType]($response);

}

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++

// 常用 格式化 方法

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++

/**

* 格式化xml输出

*/

function _xml($string)

{

return $string ? (array)simplexml_load_string($string, 'SimpleXMLElement', LIBXML_NOCDATA) : array();

}

/**

* 格式化csv输出

*/

function _csv($string)

{

$data = array();

$rows = explode("\n", trim($string));

$headings = explode(',', array_shift($rows));

foreach( $rows as $row )

{

// 利用 substr 去掉 开始 与 结尾 的 "

$data_fields = explode('","', trim(substr($row, 1, -1)));

if (count($data_fields) === count($headings))

{

$data[] = array_combine($headings, $data_fields);

}

}

return $data;

}

/**

* 格式化json输出

*/

function _json($string)

{

return json_decode(trim($string), true);

}

/**

* 反序列化输出

*/

function _serialize($string)

{

return unserialize(trim($string));

}

/**

* 执行PHP脚本输出

*/

function _php($string)

{

$string = trim($string);

$populated = array();

eval("\$populated = \"$string\";");

return $populated;

}

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值