分享PHP UTF-8和Unicode编码互转(多语言)

2015年9月27日星期日 | | 0 评论 |

PHP UTF-8和Unicode编码互转

/**        * //将内容进行UNICODE编码       * utf-8 转unicode       *        * @param string $name       * @return string       */      function utf8_unicode($name){            $name = iconv('UTF-8', 'UCS-2', $name);            $len  = strlen($name);            $str  = '';            for ($i = 0; $i < $len - 1; $i = $i + 2){                $c  = $name[$i];                $c2 = $name[$i + 1];                if (ord($c) > 0){   //两个字节的文字                    $str .= '\u'.base_convert(ord($c), 10, 16).str_pad(base_convert(ord($c2), 10, 16), 2, 0, STR_PAD_LEFT);                    //$str .= base_convert(ord($c), 10, 16).str_pad(base_convert(ord($c2), 10, 16), 2, 0, STR_PAD_LEFT);                } else {                    $str .= '\u'.str_pad(base_convert(ord($c2), 10, 16), 4, 0, STR_PAD_LEFT);                    //$str .= str_pad(base_convert(ord($c2), 10, 16), 4, 0, STR_PAD_LEFT);                }            }            $str = strtoupper($str);//转换为大写            return $str;        }            /**        * unicode 转 utf-8        *        * @param string $name        * @return string        */        function unicode_decodessss($name)        {            $name = strtolower($name);            // 转换编码,将Unicode编码转换成可以浏览的utf-8编码            $pattern = '/([\w]+)|(\\\u([\w]{4}))/i';            preg_match_all($pattern, $name, $matches);            if (!empty($matches))            {                $name = '';                for ($j = 0; $j < count($matches[0]); $j++)                {                    $str = $matches[0][$j];                    if (strpos($str, '\\u') === 0)                    {                        $code = base_convert(substr($str, 2, 2), 16, 10);                        $code2 = base_convert(substr($str, 4), 16, 10);                        $c = chr($code).chr($code2);                        $c = iconv('UCS-2', 'UTF-8', $c);                        $name .= $c;                    }                    else                    {                        $name .= $str;                    }                }            }            return $name;        }    


调用及结果:

$utf8_str = '我';    //这是汉字"你"的Unicode编码  $unicode_str = '\u4f60';    //输出 6211  echo utf8_unicode($utf8_str) . "<br/>";    //输出汉字"你"  echo unicode_decodes($unicode_str);  


注:  由于浏览器默认会解读,所以要看源代码


\U6211<br/>  你

分享PHP获取网页标题的3种实现方法代码实例

2015年9月24日星期四 | | 0 评论 |

这篇文章主要介绍了PHP获取网页标题的3种实现方法,分别使用CURL、file()函数、file_get_contents实现,需要的朋友可以参考下

一、推荐方法 CURL获取

<?php
$c = curl_init();
$url = 'www.jb51.net';
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($c);
curl_close($c);
$pos = strpos($data,'utf-8');
if($pos===false){$data = iconv("gbk","utf-8",$data);}
preg_match("/<title>(.*)<\/title>/i",$data, $title);
echo $title[1];
?>

二、使用file()函数

<?php
$lines_array = file('http://www.jb51.net/');
$lines_string = implode('', $lines_array);
$pos = strpos($lines_string,'utf-8');
if($pos===false){$lines_string = iconv("gbk","utf-8",$lines_string);}
eregi("<title>(.*)</title>", $lines_string, $title);
echo $title[1];
?>

三、使用file_get_contents

<?php
$content=file_get_contents("http://www.jb51.net/");
$pos = strpos($content,'utf-8');
if($pos===false){$content = iconv("gbk","utf-8",$content);}
$postb=strpos($content,'<title>')+7;
$poste=strpos($content,'</title>');
$length=$poste-$postb;
echo substr($content,$postb,$length);
?>



所有文章收集于网络,如果有牵扯到版权问题请与本站站长联系。谢谢合作![email protected]