导航:首页 > 编程语言 > php获取字符串编码

php获取字符串编码

发布时间:2023-04-19 15:06:50

php 查找中文字符串

在PHP中查找中文字符,有两种方案:

  1. 将PHP保存为与欲查找中文一样的编码,然后使用strpos查找。

  2. 将PHP保存为UTF-8无BOM编码,然后转换字符串编码为UTF-8,再用strpos查找。


第一种方法:

strpos($curl_res,'中文');

第二种方法:

$str=mb_convert_encoding($str,'utf-8','gbk');
mb_strpos($str,'中文');


主意:函数中的中文字符串参数的编码,必须要和PHP文件保存格式的编码一致。

⑵ PHP如何获取一个字符串的UTF-8编码

foreach(unpack(
'n*',
mb_convert_encoding('你好', 'unicode', 'gbk')
) as $i) {
echo '\u',dechex($i);
}

另,你这里的“\u60a8\u597d”其实是unicode编码,而不是utf-8编码

⑶ php如何获取中文字符长度,一个中文字符算一个

在PHP中专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数并非PHP的核心函数,所以,它们常常有可能没有开启。要在php.ini中开启即可。获取长度实例:1 ,utf-8环境下使用

header('Content-type:text/html;charset=utf-8');
/**
*可以统计中文字符串长度的函数
*@param$str要计算长度的字符串
*@param$type计算长度类型,0(默认)表示一个中文算一个字符,1表示一个中文算两个字符
*
*/
functionabslength($str)
{
if(empty($str)){
return0;
}
if(function_exists('mb_strlen')){
returnmb_strlen($str,'utf-8');
}
else{
preg_match_all("/./u",$str,$ar);
returncount($ar[0]);
}
}
$str='我们都是中国人啊,ye!';
$len=abslength($str);
var_mp($len);//return12
$len=abslength($str,'1');
echo'<br/>'.$len;//return22

/*
utf-8编码下截取中文字符串,参数可以参照substr函数
@param$str要进行截取的字符串
@param$start要进行截取的开始位置,负数为反向截取
@param$end要进行截取的长度
*/
functionutf8_substr($str,$start=0){
if(empty($str)){
returnfalse;
}
if(function_exists('mb_substr')){
if(func_num_args()>=3){
$end=func_get_arg(2);
returnmb_substr($str,$start,$end,'utf-8');
}
else{
mb_internal_encoding("UTF-8");
returnmb_substr($str,$start);
}

}
else{
$null="";
preg_match_all("/./u",$str,$ar);
if(func_num_args()>=3){
$end=func_get_arg(2);
returnjoin($null,array_slice($ar[0],$start,$end));
}
else{
returnjoin($null,array_slice($ar[0],$start));
}
}
}
$str2='wo要截取zhongwen';
echo'<br/>';
echoutf8_substr($str2,0,-4);//returnwo要截取zhon

2,支持gb2312,gbk,utf-8,big5 中文截取方法

/*

* 中文截取,支持gb2312,gbk,utf-8,big5

*

* @param string $str 要截取的字串

* @param int $start 截取起始位置

* @param int $length 截取长度

* @param string $charset utf-8|gb2312|gbk|big5 编码

* @param $suffix 是否加尾缀

*/

public function csubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)

{

if(function_exists("mb_substr"))

{

if(mb_strlen($str, $charset) <= $length) return $str;

$slice = mb_substr($str, $start, $length, $charset);

}

else

{

$re['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/";

$re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/";

$re['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/";

$re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/";

preg_match_all($re[$charset], $str, $match);

if(count($match[0]) <= $length) return $str;

$slice = join("",array_slice($match[0], $start, $length));

}

if($suffix) return $slice."…";

return $slice;

}

⑷ PHP mb_convert_encoding 获取字符串编码类型实现代码

后来又在手册上找到了is_utf8函数,这样,再结合iconv函数,我的问题就解决了。下面帖出这个函数:
复制代码
代码如下:
function
is_utf8($string)
{
return
preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E]
#
ASCII
|
[\xC2-\xDF][\x80-\xBF]
#
non-overlong
2-byte
|
\xE0[\xA0-\xBF][\x80-\xBF]
#
excluding
overlongs
|
[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}
#
straight
3-byte
|
\xED[\x80-\x9F][\x80-\xBF]
#
excluding
surrogates
|
\xF0[\x90-\xBF][\x80-\xBF]{2}
#
planes
1-3
|
[\xF1-\xF3][\x80-\xBF]{3}
#
planes
4-15
|
\xF4[\x80-\x8F][\x80-\xBF]{2}
#
plane
16
)*$%xs',
$string);
}
//
function
is_utf8
如果想深入研究,建议看下PHP手册上的“Multibyte
String
Functions”这一部分的内容。

⑸ 请问下php怎么处理截取字符串出现的乱码问题

利用php内置方法mb_substr截取不乱码;
1、GBK编码截取示例:
$str = '我是谁'; //gbk编码的字符串
echo mb_substr($str, 0, 1, 'gbk'); //输出 我

mb_substr方法比substr多一个参数,用来指定字符串编码。

2、utf-8编码截取示例:
[code]
$str = '我abc是谁'; //utf-8编码的字符串
echo mb_substr($str, 0, 2, 'utf-8'); //输出 我a
[/code]
中英混合也完全没有问题。

⑹ php,怎么获取指定长度的字符串

<?php
echo substr(需要截取字符串, 起止数, 需要截取的长度);
?>
截取字符串只支持英文。如果字符串包含中文。或混排。以及文字 编码。gb2312 和 utf8 。截取方式就不一样了。

推荐使用 bugfree 的截取字符串函数
例子:/**
* @package BugFree
* @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
*
*
* Return part of a string(Enhance the function substr())
*
* @author Chunsheng Wang <[email protected]>
* @param string $String the string to cut.
* @param int $Length the length of returned string.
* @param booble $Append whether append "...": false|true
* @return string the cutted string.
*/
function sysSubStr($String,$Length,$Append = false)
{
if (strlen($String) < = $Length )
{
return $String;
}
else
{
$I = 0;
while ($I < $Length)
{
$StringTMP = substr($String,$I,1);
if ( ord($StringTMP) >=224 )
{
$StringTMP = substr($String,$I,3);
$I = $I + 3;
}
elseif( ord($StringTMP) >=192 )
{
$StringTMP = substr($String,$I,2);
$I = $I + 2;
}
else
{
$I = $I + 1;
}
$StringLast[] = $StringTMP;
}
$StringLast = implode("",$StringLast);
if($Append)
{
$StringLast .= "...";
}
return $StringLast;
}
}

$String = "CodeBit.cn -- 简单、精彩、通用";
$Length = "18";
$Append = false;
echo sysSubStr($String,$Length,$Append);
?>

⑺ PHP怎么获取字符串长度

PHP对中文字符串的处理一直困扰于刚刚接触PHP开发的新手程序员。下面简要的剖析一下PHP对中文字符串长度的处理:

(1)PHP自带的函数如strlen()、mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节;

(2)中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8。utf-8能兼容更多的字符,所以受到很多站长的喜爱。gbk与utf-8对中文的编码不同,导致中文在gbk与utf-8编码下所占字节也有差异。



⑻ php有没有查看当前的编码方式的方法

编码问题是解码者决定的,数据本身并不指明编码方式,而是读数据的解码者选择自己的解码方式
此处,php程序是数据本身,php解释器是解码者本身,
php解释器对php程序的编码方式并不应人类对php程序的编码方式理解不同而转移
因此,理论上不存在获取当前数据编码方式的首高梁接口,只要当时的编码者(譬如人类)显示指明编码方式,
解者运码者(譬如php解释器)方可获知

即使在解析以后再人类看来是一片乱码,PHP认为一切都是正确的.

当然从前端获取来的字符例外

如果不清楚字符串的编码格式的话,就可以将这段字符这样检查:
$encode=mb_detect_encoding($string,array("ASCII",'UTF-8′,"GB2312′,"GBK",'BIG5′));
echo$encode;
这样就能知道它是念粗什么编码的了。后续操作还可以为其转码:
if($encode==“UTF-8″){
$string=iconv("UTF-8″,"GBK",$string);
}

⑼ PHP判断文件编码(XML文件中带CDATA)UTF-8判断成GBK怎么解决

设置PHP文件编码: header("Content-type: text/html; charset=utf-8");
如果你要设置成GBK,这样写header("Content-type: text/html; charset=GBK");
PHP字符串转码:
(1)$encode = mb_detect_encoding($str, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5')); //获取字符串编码格式
(2)$str_encode = mb_convert_encoding($str, 'GBK', $encode);//将字符串转换成GBK编码
希望对你有帮助

⑽ php如何判断一个字符串是不是base64编码

参考思路:PHP判断一个字符串是否经过base64编码,可以通过对该字符串解码,然后编码,最后对比两者是否相等。示例代码如下:

<?php
header("Content-type:text/html;charset=utf-8;");
$str="Y2hpbmF3aW54cA==";
$re=is_base64($str);
if($re){
echo"该字符串是base64编码";
}else{
echo"该字符串闹侍链未经过base64编码";
}
//判断液孙字符串是否经过编码方法
function谈芦is_base64($str){
if($str==base64_encode(base64_decode($str))){
returntrue;
}else{
returnfalse;
}
}
?>
阅读全文

与php获取字符串编码相关的资料

热点内容
phpmysql实例下载 浏览:749
传智黑马安卓非加密 浏览:553
服务器如何配置host 浏览:1001
守望执行命令 浏览:371
加密狗插上去了怎么办 浏览:624
锤子m1怎么把文件夹重置 浏览:213
APP的数据会存在哪里 浏览:66
一支轻快又解压的舞 浏览:588
80x86编程手册 浏览:767
android机制使用 浏览:363
国外太空探索网站源码 浏览:645
dotaimba命令大全 浏览:15
手解剖pdf 浏览:735
单片机无法烧写程序 浏览:415
pline命令 浏览:113
760贴片机编程视频 浏览:335
欧姆龙plc编程第36讲 浏览:917
我的世界如何将一个服务器弄崩 浏览:10
php网站访问量代码 浏览:433
怠速压缩机咔咔响 浏览:178