php 如果有 截取,PHP 字符串截取

这篇博客探讨了在PHP中处理UTF-8编码字符串时可能出现的乱码问题,特别是使用substr()函数进行字符串截取时。文章提供了一个自定义的cut_str()函数,该函数能够正确处理UTF-8编码的中文字符,避免了乱码的产生。此外,还提到了PHP的性能测试函数getmicrotime()和静态变量的作用域。
摘要由CSDN通过智能技术生成

PHP 字符串截取

//$str = "abcdef◆中华人民共和国";

//$str = "1234567890";

$str = "中华人民共和国abc中华人民共和国中华人民共和国";

$str = cut_str($str, 18);

echo $str;

function cut_str($str, $len){

if(strlen($str) <= $len) return $str;

$n = 0;

$tempstr = '';

for($i = 0; $i < $len; $i++){

if(ord(substr($str,$n,1)) > 224){

$tempstr .= substr($str,$n,3);

$n += 3;

$i++;//把一个中文按两个英文的长度计算

}elseif(ord(substr($str,$n,1)) > 192){

$tempstr .= substr($str,$n,2);

$n += 2;

$i++;//把一个中文按两个英文的长度计算

}else{

$tempstr .= substr($str,$n,1);

$n++;

}

}

return  $tempstr."...";

//在PHP中,用substr()函数截取带有中文字符串的话,可能会出现乱码,这是因为中西文一个字所占有的字节数不一样,而substr的长度是按照字节去算的,在GB2312编码时,一个中文占2个字节,英文为1个字节,而在UTF-8编码当中,一个中文可能占有2个或3个字节,英文或半角标点占1个字节。

//UTF-8编码的字符可能由1~3个字节组成,具体数目可以由第一个字节判断出来(理论上可能更长,但这里假设不超过3个字节)

//第一个字节大于224的,它与它之后的2个字节一起组成一个UTF-8字符。

//第一个字节大于192小于224的,它与它之后的1个字节组成一个UTF-8字符

//否则第一个字节本身就是一个英文字符(包括数字和一小部分标点符号)

//OK ,知道大概的三更,解决起来就轻松多了,于是写下了以下函数用于UTF-8的字符截取:

//PHP也有自带的函数可以用于不同编码的字符串截取,如mb_substr(),但要在php.ini中开启相应的扩展。

}

?>

相关文档:

毋庸置疑,PHP是一种非常棒的动态网页制作语言,他和C的极高相似性,使得它的语法学起来

很容易,他有很多类似C语言库函数的东西,还有像日期,字符串和时间函数等,这使得它很容

易开发相当复杂的应用程序。

当PHP应用到关键web站点上,如何保证质量将会变得很关键。然而,PHP并不是一 ......

PHP中的stristr(),strstr(),strpos()速度比较

测速代码:

function getmicrotime()

{

list($usec, $sec) = explode(" ",microtime());

return ((float)$usec + (float)$sec);

}

......

对于运行在apache里的php应用来说,static变量的作用域是一次http请求。

可以通过以下代码进行验证:

# test.php

function test(){

static $sss = 0;

++$sss;

echo $sss;

}

test();

?>

访问/test.php ,可以看到,总是 ......

; 本文并非是对英文版 php.ini 的简单翻译,而是参考了众多资料以后,结合自己的理解,增加了许多内容,

; 包括在原有 php.ini 基础上增加了一些实用模块的配置说明,同时对文件内容的安排进行了调整。

; 由于作者不喜欢 no-free 的玩意儿,所以删除了除 MySQL 和 PostgreSQL 以外的其他数据库模块配置选项。

;;;;;;;;;; ......

php.ini 的搜索路径如下(按顺序):

* SAPI 模块所指定的位置(Apache 2 中的 PHPIniDir 指令,CGI 和 CLI 中的 -c 命令行选项,NSAPI 中的 php_ini 参数,THTTPD 中的 PHP_INI_PATH 环境变量)

*HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath(Windows 注册表位置)

&nb ......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值