php的curl怎么设置utf-8,PHP:将curl_exec输出转换为UTF8

通过Gumbo和Pekka的建议,我写了curl_exec_utf8

/** The same as curl_exec except tries its best to convert the output to utf8 **/

function curl_exec_utf8($ch) {

$data = curl_exec($ch);

if (!is_string($data)) return $data;

unset($charset);

$content_type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);

/* 1: HTTP Content-Type: header */

preg_match( '@([\w/+]+)(;\s*charset=(\S+))?@i', $content_type, $matches );

if ( isset( $matches[3] ) )

$charset = $matches[3];

/* 2: element in the page */

if (!isset($charset)) {

preg_match( '@

if ( isset( $matches[3] ) )

$charset = $matches[3];

}

/* 3: element in the page */

if (!isset($charset)) {

preg_match( '@

if ( isset( $matches[1] ) )

$charset = $matches[1];

}

/* 4: PHP's heuristic detection */

if (!isset($charset)) {

$encoding = mb_detect_encoding($data);

if ($encoding)

$charset = $encoding;

}

/* 5: Default for HTML */

if (!isset($charset)) {

if (strstr($content_type, "text/html") === 0)

$charset = "ISO 8859-1";

}

/* Convert it if it is anything but UTF-8 */

/* You can change "UTF-8" to "UTF-8//IGNORE" to

ignore conversion errors and still output something reasonable */

if (isset($charset) && strtoupper($charset) != "UTF-8")

$data = iconv($charset, 'UTF-8', $data);

return $data;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值