热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用PHP分割字符串函数把字符串成分割数组

在php中字符串分割有很多,如有str_split,explode,chunk_split()函数,下面我给大家分别整理了一些实例.str_split()可以将字符串按照需要的长度做分割,但是如果字符串中有UTF-8编码的中文出现,就会...
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
当前位置:首页 > PHP教程 > php函数 > 列表
利用PHP分割字符串函数把字符串成分割数组
发布: 来源:  添加日期:2014-09-13 09:57:30 浏览: 评论:0 

在php中字符串分割有很多,如有str_split,explode,chunk_split()函数,下面我给大家分别整理了一些实例.

str_split() 可以将字符串按照需要的长度做分割,但是如果字符串中有UTF-8编码的中文出现,就会出现乱码,如果需要实现支持中文的按照长度分割字符串的功能就需要额外处理,代码如下:

  1. $str = 'hello world';  
  2. $arr = str_split($str);  
  3. print_r($arr);  
  4. /*  
  5. Array  
  6.  
  7.      
  8. [0] => h  
  9.      
  10. [1] => e  
  11.      
  12. [2] => l  
  13.      
  14. [3] => l  
  15.      
  16. [4] => o  
  17.      
  18. [5] =>  
  19.      
  20. [6] => w  
  21.      
  22. [7] => o  
  23.      
  24. [8] => r  
  25.      
  26. [9] => l  
  27.      
  28. [10] => d  
  29.  
  30. */ 
  31.    
  32. $arr = str_split($str,2);  
  33. print_r($arr);  
  34. /*  
  35. Array  
  36.  
  37.      
  38. [0] => he  
  39.      
  40. [1] => ll  
  41.      
  42. [2] => o  
  43.      
  44. [3] => wo  
  45.      
  46. [4] => rl  
  47.      
  48. [5] => d  
  49.  
  50.    
  51. */ 
  52. ?> 

支持UTF-8编码的中文的按照长度分割字符串函数,代码如下:

  1. /**  
  2. * @version $Id: str_split.php 10381 2008-06-01 03:35:53Z pasamio $  
  3. * @package utf8  
  4. * @subpackage strings  
  5. */ 
  6. function utf8_str_split($str$split_len = 1)  
  7. {  
  8.     if (!preg_match(&#39;/^[0-9]+$/&#39;$split_len) || $split_len < 1)  
  9.         return FALSE;  
  10.    
  11.     $len = mb_strlen($str&#39;UTF-8&#39;);  
  12.     if ($len <= $split_len)  
  13.         return array($str);  
  14.    
  15.     preg_match_all(&#39;/.{&#39;.$split_len.&#39;}|[^x00]{1,&#39;.$split_len.&#39;}$/us&#39;$str$ar);  
  16.    
  17.     return $ar[0];  
  18. }  
  19.    
  20. $str = &#39;hello 你好&#39;;  
  21.    
  22. $arr = utf8_str_split($str);  
  23. print_r($arr);  
  24. /*  
  25. Array  
  26.  
  27.      
  28. [0] => h  
  29.      
  30. [1] => e  
  31.      
  32. [2] => l  
  33.      
  34. [3] => l  
  35.      
  36. [4] => o  
  37.      
  38. [5] =>  
  39.      
  40. [6] => 你  
  41.      
  42. [7] => 好  
  43.  
  44. */ 
  45. ?> 

主要是chunk_split()函数的功能,与str_split()的区别是str_split()是把字符串按照长度分割成数组,而chunk_split()则是用一个指定的特殊符按照长度分割成新的字符串.相当于 str_split()+implode()两个函数的功能,同样这个函数是不支持中文的,需要实现这样的功能需要自定义函数,代码如下:

  1.     $data = "e0ab71ab9ed24e627a24e7d65367936393cb3b39db9a9e84d65cd7a9254a4665";  
  2.     echo chunk_split($data, 30, "");  
  3.     echo implode("",str_split($data,30)); 
  4. //和chunk_split效果一样  
  5. ?> 

支持中文的自定义chunk_split()函数,代码如下:

  1. //from Peter from dezzignz.com 05-Apr-2010 11:30 @ php.net  
  2.    
  3. function mbStringToArray ($str) {  
  4.     if (emptyempty($str)) return false;  
  5.     $len = mb_strlen($str);  
  6.     $array = array();  
  7.     for ($i = 0; $i < $len$i++) {  
  8.         $array[] = mb_substr($str$i, 1);  
  9.     }  
  10.     return $array;  
  11. }  
  12.    
  13. function mb_chunk_split($str$len$glue) {  
  14.     if (emptyempty($str)) return false;  
  15.     $array = mbStringToArray ($str);  
  16.     $n = 0;  
  17.     $new = &#39;&#39;;  
  18.     foreach ($array as $char) {  
  19.         if ($n < $len$new .= $char;  
  20.         elseif ($n == $len) {  
  21.             $new .= $glue . $char;  
  22.             $n = 0;  
  23.         }  
  24.         $n++;  
  25.     }  
  26.     return $new;  
  27. }  
  28.    
  29. $data = "e0ab你好4e627a24e7d65367936393cb3b39db9钓鱼岛a9e84d65cd7a9254a4665"//开源代码phpfensi.com 
  30. echo mb_chunk_split($data, 30, "");  
  31. ?> 

PHP explode函数说明,这个函数我们经常会用到.

explode 函数:该函数所支持版本(PHP 4,PHP 5),通常是比 split() 更快的替代方便,如果不需要正则表达式的威力,则使用 explode() 更快,这样就不会招致正则表达式引擎的浪费.

explode:使用一个字符串分割另一个字符串.

说明:array explode(string $delimiter,string $string [,int $limit ])

此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来.

参数:delimiter 边界上的分隔字符.

string:输入的字符串.

limit:如果设置了 limit 参数并且是正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分,如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素如果 limit 是 0,则会被当做 1.

由于历史原因,虽然 implode() 可以接收两种参数顺序,但是 explode() 不行,你必须保证 separator 参数在 string 参数之前才行.

返回值:此函数返回由字符串组成的 array,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来.

如果 delimiter 为空字符串(""),explode() 将返回 FALSE,如果 delimiter 所包含的值在 string 中找不到,并且使用了负数的 limit,那么会返回空的 array,否则返回包含 string 单个元素的数组.

Report a bug,更新日志

版本 说明 

5.1.0 支持负数的 limit 

4.0.1 增加了参数 limit

Example #1 explode() 例子,PHP代码:

  1.     // 示例 1        
  2.     $pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";        
  3.     $pieces = explode(" "$pizza);        
  4.     echo $pieces[0]; // piece1        
  5.     echo $pieces[1]; // piece2     
  6.     // 示例 2        
  7.     $data = "foo:*:1023:1000::/home/foo:/bin/sh";        
  8.     list($user$pass$uid$gid$gecos$home$shell) = explode(":"$data);        
  9.     echo $user// foo        
  10.     echo $pass// *  
  11. ?> 

Example #2 explode() return examples,PHP代码如下:

  1.     /* A string that doesn&#39;t contain the delimiter will simply return a one-length array of the original string. */       
  2.     $input1 = "hello";        
  3.     $input2 = "hello,there";        
  4.     var_dump( explode&#39;,&#39;$input1 ) );      
  5.     var_dump( explode&#39;,&#39;$input2 ) );        
  6.            
  7.     ?> 

以上例程会输出:

  1. array(1) 
  2.     [0] => string(5) "hello" 
  3. array(2) 
  4.     [0] => string(5) "hello" 
  5.     [1] => string(5) "there" 

Example #3 limit 参数的例子,PHP代码如下:

  1.     $str = &#39;one|two|three|four&#39;;        
  2.            
  3.     // 正数的 limit        
  4.     print_r(explode(&#39;|&#39;, $str, 2));        
  5.            
  6.     // 负数的 limit(自 PHP 5.1 起)        
  7.     print_r(explode(&#39;|&#39;, $str, -1));        
  8.     ?>      
  9. //以上例程会输出: 
  10. //开源代码phpfensi.com 
  11. Array 
  12.     [0] => one 
  13.     [1] => two|three|four 
  14. Array 
  15.     [0] => one 
  16.     [1] => two 
  17.     [2] => three 
  18. )

推荐阅读
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了使用CentOS7.0 U盘刻录工具进行安装的详细步骤,包括使用USBWriter工具刻录ISO文件到USB驱动器、格式化USB磁盘、设置启动顺序等。通过本文的指导,用户可以轻松地使用U盘安装CentOS7.0操作系统。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
author-avatar
nd子听雨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有