php 汉字截取substr出现乱码
发布网友
发布时间:2022-04-06 06:50
我来回答
共2个回答
懂视网
时间:2022-04-06 11:11
(推荐教程:php教程)
原因分析:
substr() 函数只针对英文字符,如果我们要分割中文字符,则需要使用 mb_substr()函数。
函数介绍:
mb_substr() 函数返回字符串的一部分。
语法:
mb_substr(string $str, int $start[,int $length = NULL[, string $encoding = mb_internal_encoding()]]):string
参数介绍:
str 必需。从该 string 中提取子字符串
start 必需。规定在字符串的何处开始
length 可选。规定要返回的字符串长度。默认是直到字符串的结尾
encoding 可选。字符编码。如果省略,则使用内部字符编码
返回值:
返回字符串的提取部分,如果失败则返回 FALSE,或者返回一个空字符串。
代码实现:
<?php
header("Content-Type: text/html; charset=utf-8");
$str="网站工作室欢迎您!";
echo mb_strlen($str,"UTF8")."<br>";
echo mb_substr($str,0,2,"UTF8")."<br>";
?>
热心网友
时间:2022-04-06 08:19
应该是少计算了一个数字。你截取汉字时多加一位数看看。
PHP中使用substr截取字符串出现中文乱码问题该怎么办
这种截取字符的结果,肯定不是我们想要的结果,这种出现PHP substr中文乱码的情况,可能会导致程序无法正常运行。解决办法主要有两种:一、使用mbstring扩展库的mb_substr()截取就不会出现乱码了。可以用mb_substr()/mb_strcut()这个函数,mb_substr()/mb_strcut()的用法与substr()相似,只是在mb_substr...
同一个PHP文件中用substr_replace函数时出现乱码问题,用str_ireplace函 ...
这个函数 就不会有乱码了
php中explode截取中文又乱码,求解~~
如下面例子,在GBK编码下会产生乱码。原因,在php6之前,字符是以字节形式存在的,字符"碪"的gbk字节码是"B4 55",而字符"U"的字节码是"55",在explode函数中第一个参数的字符串会转成相应的字节,然后和第二个参数的字节码比对,进行分割。在下面例子中就是 55 分割 B4 55 B4 55 55 B4 55 ...
php截取函数
感觉几个回答都不是太好,因为一般$value['subject']看字面意思应该是中文,如果直接用substr的话处理不是太好,因为一个汉字是2个字符,这样容易出现1个字符的乱码。解决方法:/* 截取一定长度的完整的中文字符 */ function cnsubstr($str,$strlen=10) { if(empty($str)||!is_numeric($strlen)...
请教php高手,解决basename函数和mb_substr函数处理中文文件名称的解决...
两个解决办法:第一,不使用中文文件名;第二,对文件名进行编码转换,然后mb_substr就不会出现乱码了。
求问一个php的mb_substr()截取字符出现的问题
这是浏览器的编码设置问题。考虑通过Php的函数header设置页面编码。例如:header('Content-Type: text/html; charset=gb2312');
php如何分割中文字符串
php分割中文字符串,如果直接用PHP函数“str_split”来分割,会出现乱码,因为中文字符长度和英文字符长度是不一样的。所以,可以建立新的函数先把字符转成ASCII值,接着通过判断不同字符的长度来正确分割中文字符串,把结果存入数组,最后再用PHP函数“join”在字符间插入百分号。具体参考代码如下:<?php...
php字符串的截取
1楼的代码有点问题 截取中文会出现问题 比如刚好是9个字母1个汉字 你截取10位的话 就会出现乱码 所以截取含中文字符串时要用mb_substr代替substr for($i=0;$i<strlen($str);$i=$i+10){ string=mb_substr($str,$i,10);echo $string."";} ...
php问题……php截取字符串几个实用的函数
1.substr(源字符串,其实位置[,长度])-截取字符串返回部分字符串 <?php$str="phpddt.com";echosubstr($str,2);//pddt.comechosubstr($str,2,3);//pddechosubstr($str,-2);//om负数从结尾开始取?> 但是当你截取中文字符串的时候很容易出现乱码,因为一个汉字是两个字节,而一个英文字母是...
php文件怎么打开是乱码?
再保存就可以去掉BOM信息了。php本身不是Unicode的,所有substr之类的函数得改成mb_substr(需要装mbstring扩展);或者用iconv转码。如果你的HTML文件文件出现了乱码问题,那么你可以在head标签里面加入UTF8编码(国际化编码):UTF-8是没有国家的编码,也就是独立于任何一种语言,任何语言都可以使用的。