php截取字符串几个实用的函数
1.substr(源字符串,其实位置[,长度])-截取字符串返回部分字符串
<?php
$str ="phpddt.com";
echo substr($str,2);//pddt.com
echo substr($str,2,3);//pdd
echo substr($str,-2);//om 负数从结尾开始取
?>
但是当你截取中文字符串的时候很容易出现乱码,因为一个汉字是两个字节,而一个英文字母是一个字节。解决办法如下:
2.mb_substr(),使用方法和substr相同,不过要开启php.ini里面extension=php_mbstring.dll扩展,不用担心,一般的空间商都会开启这个扩展的。
<?php
echo mb_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中文字符串
function mysubstr($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;
}
echo mysubstr("php点点通",1,5);//php点
?>
(2)截取utf8编码的多字节字符串
<?php
//截取utf8字符串
function utf8Substr($str, $from, $len)
{
return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
'$1',$str);
}
echo utf8Substr("php点点通",1,5);//hp点点通
?>
(3)支持 utf-8、gb2312都支持的汉字截取函数
<?php
//同时支持 utf-8、gb2312都支持的汉字截取函数 ,默认编码是utf-8
function cut_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)return join('', array_slice($t_string[0], $start, $sublen))."...";
return join('', 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教程";
echo cut_str($str,8,0);//php点点通提供...
?>

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Laravel实现定时任务的示例代码
最近在玩Laravel实现定时任务,这个是示例代码,可以参照这个实例。有需要的可以看看 定时任务是后端开发过程中一项十分常见的需求,常出现在数据统计、垃圾信息清理等场景中。Laravel 提供了一整套的定时任务工具,让我们只需要专注地完成逻辑,剩下的基础工作将由它来承担。 基本用法 生成命令 php artisan make:command AreYouOK 5.2 及之前的版本,此命令为 php artisan make:console xxx 编辑命令 编辑 app/Console/Commands/AreYouOK.php 文件,修改如下几处: ... ... protected $signature = 'areyou:ok'; // 命令名称 protected $description = '雷军,科技圈最会唱歌的男人'; // 命令描述,没什么用 public function __construct() { parent::__construct(); // 初始化代码写到这里,也没什么用 } public function handle() { // 功能代码写到这里...
-
下一篇
PhpStorm中如何配置SVN,详细操作方法
1.简介: PhpStorm是一个轻量级且便捷的PHP IDE,其提供的智能代码补全,快速导航以及即时错误检查等功能大大提高了编码效率。它是一款商业的 PHP 集成开发工具,以其独特的开发便利性,短时间内赢得了大量PHPer的青睐。 SVN是Subversion的简称,是一个开放源代码的版本控制系统。说得简单一点SVN就是用于多个人共同开发同一个项目,达到共用资源、记录项目版本的目的。 PhpStorm内置了svn支持,因此无需单独下载svn。 2.操作步骤: 下面是在PhpStorm中配置svn的操作方法: **2.1 打开Subversion ** 打开PhpStorm,找到工具 VCS—>Checkout from Version Control—>Subversion ,点击进入。 image 2.2添加 点击页面中的“+”号,然后输入svn地址(Repository URL 仓库链接)。点击OK。 image 2.3svn检出 这时候你能浏览到svn上文件列表。点击Checkout。 image 2.4选择本地目录 选择一个本地的目标目录,点击OK。选择需要更新到...
相关文章
文章评论
共有0条评论来说两句吧...