首页 > 后端开发 > 正文

同一个PHP文件中用substr_replace函数时出现乱码问题,用str_ireplace函数时正常,究竟问题出在哪儿了 php问题……php截取字符串几个实用的函数

2024-09-10 14:09:16 | 我爱编程网

同一个PHP文件中用substr_replace函数时出现乱码问题,用str_ireplace函数时正常,究竟问题出在哪儿了 php问题……php截取字符串几个实用的函数很多朋友对这方面很关心,我爱编程网整理了相关文章,供大家参考,一起来看一下吧!

本文目录一览:

同一个PHP文件中用substr_replace函数时出现乱码问题,用str_ireplace函数时正常,究竟问题出在哪儿了 php问题……php截取字符串几个实用的函数

同一个PHP文件中用substr_replace函数时出现乱码问题,用str_ireplace函数时正常,究竟问题出在哪儿了

需要从写 该函数
if($length && strlen($string) > $length) {

//截断字符

$wordscut = '';

if(strtolower($encoding) == 'utf-8') {

//utf8编码

$n = 0;

$tn = 0;

$noc = 0;

while ($n < strlen($string)) {

$t = ord($string[$n]);

if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {

$tn = 1;

$n++;

$noc++;

} elseif(194 <= $t && $t <= 223) {

$tn = 2;
$n += 2;

$noc += 2;

} elseif(224 <= $t && $t < 239) {

$tn = 3;

$n += 3;

$noc += 2;

} elseif(240 <= $t && $t <= 247) {

$tn = 4;

$n += 4;

$noc += 2;

} elseif(248 <= $t && $t <= 251) {

$tn = 5;

$n += 5;
$noc += 2;

} elseif($t == 252 || $t == 253) {

$tn = 6;

$n += 6;

$noc += 2;

} else {

$n++;

}

if ($noc >= $length) {

break;

}

}

if ($noc > $length) {

$n -= $tn;

}

$wordscut = substr($string, 0, $n);

} else {
for($i = 0; $i < $length - 1; $i++) {

if(ord($string[$i]) > 127) {

$wordscut .= $string[$i].$string[$i + 1];

$i++;

} else {

$wordscut .= $string[$i];

}

}

}

$string = $wordscut;

}

return trim($string);

}
这个函数 就不会有乱码了

同一个PHP文件中用substr_replace函数时出现乱码问题,用str_ireplace函数时正常,究竟问题出在哪儿了 php问题……php截取字符串几个实用的函数

php问题……php截取字符串几个实用的函数

1.substr(源字符串,其实位置[,长度])-截取字符串返回部分字符串

<?php$str="phpddt.com";echosubstr($str,2);//pddt.comechosubstr($str,2,3);//pddechosubstr($str,-2);//om负数从结尾开始取?>

但是当你截取中文字符串的时候很容易出现乱码,因为一个汉字是两个字节,而一个英文字母是一个字节。解决办法如下.

2.mb_substr(),使用方法和substr相同,不过要开启php.ini里面extension=php_mbstring.dll扩展,不用担心,一般的空间商都会开启这个扩展的。

<?phpechomb_substr("php点点通",1,3,"UTF-8");//hp点?>

代码如下:

substr(string,start,length)

其中start的参数

正数-在字符串的指定位置开始

负数-在从字符串结尾的指定位置开始

0-在字符串中的第一个字符处开始 我爱编程网

strstr()函数搜索一个字符串在另一个字符串中的第一次出现。

该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回false。

strstr('abc@jb51.net','@',TRUE);//参数设定true,返回查找值@之前的首部,abc

strstr('abc@jb51.net','@');//默认返回查找值@之后的尾部,@jb51.net

网上也有很多中文字符串截取教程,实现起来比较复杂,感觉还是用php自带的函数实现起来比较好。整理的网络资料(php代码)如下:

(1)截取GB2312中文字符串

<?php//截取GB2312中文字符串functionmysubstr($str,$start,$len){$tmpstr="";$strlen=$start+$len;for($i=0;$i<$strlen;$i++){if(ord(substr($str,$i,1))>0xa0){$tmpstr.=substr($str,$i,2);$i++;}else$tmpstr.=substr($str,$i,1);}return$tmpstr;}echomysubstr("php点点通",1,5);//php点?>

(2)截取utf8编码的多字节字符串

<?php//截取utf8字符串functionutf8Substr($str,$from,$len){returnpreg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s','$1',$str);}echoutf8Substr("php点点通",1,5);//hp点点通?>

(3)支持utf-8、gb2312都支持的汉字截取函数

<?php//同时支持utf-8、gb2312都支持的汉字截取函数,默认编码是utf-8functioncut_str($string,$sublen,$start=0,$code='UTF-8'){if($code=='UTF-8'){$pa="/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";preg_match_all($pa,$string,$t_string);if(count($t_string[0])-$start>$sublen)returnjoin('',array_slice($t_string[0],$start,$sublen))."...";returnjoin('',array_slice($t_string[0],$start,$sublen));}else{$start=$start*2;$sublen=$sublen*2;$strlen=strlen($string);$tmpstr='';for($i=0;$i<$strlen;$i++){if($i>=$start&&$i<($start+$sublen)){if(ord(substr($string,$i,1))>129){$tmpstr.=substr($string,$i,2);}else{$tmpstr.=substr($string,$i,1);}}if(ord(substr($string,$i,1))>129)$i++;}if(strlen($tmpstr)<$strlen)$tmpstr.="...";return$tmpstr;}}$str="php点点通提供原创php教程";echocut_str($str,8,0);//php点点通提供...?>

同一个PHP文件中用substr_replace函数时出现乱码问题,用str_ireplace函数时正常,究竟问题出在哪儿了 php问题……php截取字符串几个实用的函数

在php中有没有类似split的函数啊?

我爱编程网(https://www.52biancheng.com)小编还为大家带来在php中有没有类似split的函数啊?的相关内容。

$str = "a,b,c,d,e";
$arr = explode(" ",$arr);
---------------------------------------------------- 以下是官方文档的说明.
array explode ( string $separator, string $string [, int $limit] )

此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 separator 作为边界点分割出来。如果设置了 limit 参数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。

以上就是我爱编程网为大家带来的同一个PHP文件中用substr_replace函数时出现乱码问题,用str_ireplace函数时正常,究竟问题出在哪儿了 php问题……php截取字符串几个实用的函数,希望能帮助到大家!更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“同一个PHP文件中用substr_replace函数时出现乱码问题,用str_ireplace函数时正常,究竟问题出在哪儿了 php问题……php截取字符串几个实用的函数”相关推荐
php分割数组函数 split和explode的区别(同一个PHP文件中用substr_replace函数时出现乱码问题,用str_ireplace函数时正常,究竟问题出在哪儿了)
php分割数组函数 split和explode的区别(同一个PHP文件中用substr_replace函数时出现乱码问题,用str_ireplace函数时正常,究竟问题出在哪儿了)

php分割数组函数split和explode的区别一句话总结这三个分割函数的explode用字符串分割,split和preg_split用正则分割.效率方面:explode最快,其次preg_split最后split.split()函数用正则表达式来把字符串拆分并返回数组,如果出错则返回false。用法:split(string$pattern,string$string

2024-09-23 13:06:36
PHP中使用substr截取字符串出现中文乱码问题该怎么办
PHP中使用substr截取字符串出现中文乱码问题该怎么办

php字符串的截取1楼的代码有点问题截取中文会出现问题比如刚好是9个字母1个汉字你截取10位的话就会出现乱码所以截取含中文字符串时要用mb_substr代替substrfor($i=0;$i&lt;strlen($str);$i=$i+10){$string=mb_substr($str,$i,10);echo$string."&lt;br&gt;";}php获取字符串

2024-07-20 06:29:02
php字符串处理函数(php字符串函数) php问题……php截取字符串几个实用的函数
php字符串处理函数(php字符串函数) php问题……php截取字符串几个实用的函数

php字符串处理函数(php字符串函数)php如何执行字符串中的函数mixedcall_user_func??(callable$callback?[,mixed$parameter?[,mixed$...?]])把第一个参数作为回调函数(callback),并且将其余的参数作为回调函数的参数。error_reporting(E_ALL);fun

2024-11-29 11:13:53
php函数基础问题(php时间函数问题)
php函数基础问题(php时间函数问题)

php函数基础问题1、int,bool是指函数的返回值类型。2、第一个string是参数类型,第二个string是参数名。3、[,int..]表示可选参数,不输入的话则使用默认值,逗号在前边是跟前边的参数隔开。。。php时间函数问题使用date("Y-m-dH:i:s",time())date将服务器的时间格式化。语法:stringdate(stringform

2024-10-03 15:47:53
php 的日期函数的问题(php时间函数问题)
php 的日期函数的问题(php时间函数问题)

php的日期函数的问题date函数返回各种格式的日期值,date(格式,[日期]),第一个参数是格式,第二个参数是日期,第二个参数可以省略(当前日期),例如date('l')就得到当前星期的完整名称,参数是小写的字母L,结果是Sunday到Saturday。date函数详细的格式字符如下:格式字串可以识别以下format参数的字符串format字符说明返回值例子

2024-10-13 23:51:35
PHP中array_reverse函数的一个小问题(PHP处理数组常用的几个函数)
PHP中array_reverse函数的一个小问题(PHP处理数组常用的几个函数)

PHP中array_reverse函数的一个小问题保留原来的下标。$b = array("Cat","Dog","Horse");print_r(array_reverse($b));// 数字索引的数组,需设置第二个参数保留原索引print_r(array_reverse($b, true));//Array ( [0] =&gt; Horse [1] =&gt; Dog [2] =

2024-12-29 10:51:08
如何利用PHP来截取一段中文字符串而不出现乱码
如何利用PHP来截取一段中文字符串而不出现乱码

如何利用PHP来截取一段中文字符串而不出现乱码/*功能:截取全角和半角混合的字符串以避免乱码参数: $str_cut 需要截断的字符串 $length  允许字符串显示的最大长度*/function substr_cut($str_cut,$length = 30){  if (strlen($str_cut) &gt;; $length){  for($i=0; $i &lt; $leng

2024-07-13 12:16:29
php中用递归函数计算出16的4次方(php时间函数问题)
php中用递归函数计算出16的4次方(php时间函数问题)

php中用递归函数计算出16的4次方在PHP中,可以使用递归函数来计算16的4次方。以下是一个使用递归函数的示例代码:phpfunctionpower($base,$exponent){if($exponent==0){return1;}else{return$base*power($base,$exponent-1);}}$result=power(1

2024-09-20 03:35:39