Alfalfa  you name ? 



家中独我一人矣。
PHP处理&#开头编码

我们在抓取爬虫中类似这样的字符串

&#x e011&# 25105

加了空格,不然网页会自动渲染成文字...


实现方式一

$str = '我';
/* 將 '我' 转换成 '25105' 或 '我' */
// 使用 iconv
$unicode_html = base_convert(bin2hex(iconv('UTF-8', 'UCS-4', $str)), 16, 10); // 25105
// 使用 mb_convert_encoding
$unicode_html = base_convert(bin2hex(mb_convert_encoding($str, 'ucs-4', 'utf-8')), 16, 10); // 25105
// 补上 &#xxxxx;

$unicode_html = '&#' . base_convert(bin2hex(iconv("utf-8", "ucs-4", $str)), 16, 10) . ';'; // &# 25105;
// 將 我 轉回 '我'
$str = mb_convert_encoding($unicode_html, 'UTF-8', 'HTML-ENTITIES'); // '我', $unicode_html = '&# 25105'


实现方式二 

/**
* 过滤非utf-8
* @param unknown $string
* @return Ambigous <mixed, unknown>|unknown
*/
function filter_utf8_char($ostr){
preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $ostr, $matches);
$str = join('', $matches[0]);
if($str==''){ //含有特殊字符需要逐個處理
$returnstr = '';
$i = 0;
$str_length = strlen($ostr);
while ($i<=$str_length){
$temp_str = substr($ostr, $i, 1);
$ascnum = Ord($temp_str);
if ($ascnum>=224){
$returnstr = $returnstr.substr($ostr, $i, 3);
$i = $i + 3;
}elseif ($ascnum>=192){
$returnstr = $returnstr.substr($ostr, $i, 2);
$i = $i + 2;
}elseif ($ascnum>=65 && $ascnum<=90){
$returnstr = $returnstr.substr($ostr, $i, 1);
$i = $i + 1;
}elseif ($ascnum>=128 && $ascnum<=191){ // 特殊字符
$i = $i + 1;
}else{
$returnstr = $returnstr.substr($ostr, $i, 1);
$i = $i + 1;
}
}
$str = $returnstr;
preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $str, $matches);
$str = join('', $matches[0]);
}
return $str;
}




你可能还会对下面的内容感兴趣:

Music List
0:00
Artist
MUsic Title
啦啦啦