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

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

 代码如下 复制代码

<?php
$str = 'hello world';
$arr = str_split($str);
print_r($arr);
/*
Array
(
   
[0] => h
   
[1] => e
   
[2] => l
   
[3] => l
   
[4] => o
   
[5] =>
   
[6] => w
   
[7] => o
   
[8] => r
   
[9] => l
   
[10] => d
)
*/
 
$arr = str_split($str,2);
print_r($arr);
/*
Array
(
   
[0] => he
   
[1] => ll
   
[2] => o
   
[3] => wo
   
[4] => rl
   
[5] => d
)
 
*/
?>

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

 代码如下 复制代码

<?php
/**
* @version $Id: str_split.php 10381 2008-06-01 03:35:53Z pasamio $
* @package utf8
* @subpackage strings
*/
function utf8_str_split($str, $split_len = 1)
{
    if (!preg_match('/^[0-9]+$/', $split_len) || $split_len < 1)
        return FALSE;
 
    $len = mb_strlen($str, 'UTF-8');
    if ($len <= $split_len)
        return array($str);
 
    preg_match_all('/.{'.$split_len.'}|[^x00]{1,'.$split_len.'}$/us', $str, $ar);
 
    return $ar[0];
}
 
$str = 'hello 你好';
 
$arr = utf8_str_split($str);
print_r($arr);
/*
Array
(
   
[0] => h
   
[1] => e
   
[2] => l
   
[3] => l
   
[4] => o
   
[5] =>
   
[6] => 你
   
[7] => 好
)
*/
?>

主要是chunk_split()函数的功能

与str_split()的区别是str_split()是把字符串按照长度分割成数组,而chunk_split()则是用一个指定的特殊符按照长度分割成新的字符串。

相当于 str_split()+implode()两个函数的功能。

同样这个函数是不支持中文的,需要实现这样的功能需要自定义函数。

 代码如下 复制代码

<?php
    $data = "e0ab71ab9ed24e627a24e7d65367936393cb3b39db9a9e84d65cd7a9254a4665";
    echo chunk_split($data, 30, "<br />");
    echo implode("<br />",str_split($data,30));
//和chunk_split效果一样
?>

支持中文的自定义chunk_split()函数

 代码如下 复制代码

<?php
//from Peter from dezzignz.com 05-Apr-2010 11:30 @ php.net
 
function mbStringToArray ($str) {
    if (empty($str)) return false;
    $len = mb_strlen($str);
    $array = array();
    for ($i = 0; $i < $len; $i++) {
        $array[] = mb_substr($str, $i, 1);
    }
    return $array;
}
 
function mb_chunk_split($str, $len, $glue) {
    if (empty($str)) return false;
    $array = mbStringToArray ($str);
    $n = 0;
    $new = '';
    foreach ($array as $char) {
        if ($n < $len) $new .= $char;
        elseif ($n == $len) {
            $new .= $glue . $char;
            $n = 0;
        }
        $n++;
    }
    return $new;
}
 
$data = "e0ab你好4e627a24e7d65367936393cb3b39db9钓鱼岛a9e84d65cd7a9254a4665";
echo mb_chunk_split($data, 30, "<br />");
?>

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代码

 

 代码如下 复制代码
   <?php      
    // 示例 1      
    $pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";      
    $pieces = explode(" ", $pizza);      
    echo $pieces[0]; // piece1      
    echo $pieces[1]; // piece2      
         
    // 示例 2      
    $data = "foo:*:1023:1000::/home/foo:/bin/sh";      
    list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);      
    echo $user; // foo      
    echo $pass; // *      
         
    ?>      

Example #2 explode() return examples
PHP代码

  

 代码如下 复制代码

  <?php      
    /* A string that doesn't contain the delimiter will simply return a one-length array of the original string. */     
    $input1 = "hello";      
    $input2 = "hello,there";      
    var_dump( explode( ',', $input1 ) );    
    var_dump( explode( ',', $input2 ) );      
         
    ?>      

 

以上例程会输出:

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

Example #3 limit 参数的例子
PHP代码

  

 代码如下 复制代码
  <?php      
    $str = 'one|two|three|four';      
         
    // 正数的 limit      
    print_r(explode('|', $str, 2));      
         
    // 负数的 limit(自 PHP 5.1 起)      
    print_r(explode('|', $str, -1));      
    ?>   

 

以上例程会输出:
Array
(
    [0] => one
    [1] => two|three|four
)
Array
(
    [0] => one
    [1] => two
    [2] => three
)

时间: 2024-10-24 22:17:17

利用PHP分割字符串函数把字符串成分割数组的相关文章

C#字符串函数与字符串操作

字符串是由类定义的,如下 public sealed class string : icomparable, icloneable, iconvertible, icomparable<string>, ienumerable<char>, ienumerable, iequatable<string> 注意它从接口ienumerable<char>派生,那么如果想得到所有单个字符,那就简单了, list<char> chars = s.toli

php支持中文字符串分割的函数_php技巧

str_split不支持中文,利用mb_xx函数实现个 /** * Convert a string to an array * @param string $str * @param number $split_length * @return multitype:string */ function mb_str_split($str,$split_length=1,$charset="UTF-8"){ if(func_num_args()==1){ return preg_spl

PHP字符串函数教程:PHP字符串分割函数处理

PHP字符串函数在PHP网站开发中广泛使用,比如使用PHP字符串函数对字符串分割.截取.匹配.替换等处理.PHP字符串函数对于PHP入门学习者来说必不可少,本文将主要介绍PHP字符串分割函数处理心得,开启PHP字符串函数入门学习教程之旅. 常用的PHP字符串分割函数 常用的PHP分割字符串函数主要有explode.strtok.str_split,主要用来拆分字符串,并以数组或字符串形式返回,与这三个PHP字符串分隔函数相对应的,以分隔符连接拆分字符串的PHP字符串函数有implode.join

asp之字符串函数示例

函数|示例|字符串 asp之字符串函数示例用字符串函数对字符串进行截头去尾.大小写替换等操作. 函数 语法 功能 Len Len(string|varname) 返回字符串内字符的数目,或是存储一变量所需的字节数. Trim Trim(string) 将字符串前后的空格去掉 Ltrim Ltrim(string) 将字符串前面的空格去掉 Rtrim Rtrim(string) 将字符串后面的空格去掉 Mid Mid(string,start,length) 从string字符串的start字符开

MySQL字符串函数详解(推荐)_Mysql

一.ASCII ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL,返回NULL. 二.ORD ORD(str) 如果字符串str最左面字符是一个多字节字符,通过以格式((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...]返回字符的ASCII代码值来返回多字节字符代码.如果最左面的字符不是一个多字节字符.返回与A

asp之字符串函数示例_应用技巧

asp之字符串函数示例用字符串函数对字符串进行截头去尾.大小写替换等操作. 函数 语法 功能 Len Len(string|varname) 返回字符串内字符的数目,或是存储一变量所需的字节数. Trim Trim(string) 将字符串前后的空格去掉 Ltrim Ltrim(string) 将字符串前面的空格去掉 Rtrim Rtrim(string) 将字符串后面的空格去掉 Mid Mid(string,start,length) 从string字符串的start字符开始取得length长

ASP字符串函数大全

本文汇集了asp中常用函数 函数 语法 功能 Len Len(stringvarname) 返回字符串内字符的数目,或是存储一变量所需的字节数. Trim Trim(string) 将字符串前后的空格去掉 Ltrim Ltrim(string) 将字符串前面的空格去掉 Rtrim Rtrim(string) 将字符串后面的空格去掉 Mid Mid(string,start,length) 从string字符串的start字符开始取得length长度的字符串,如果省略第三个参数表示从start字符

怎样利用正则表达式把用URLEncode的字符串转换成正常的字符串函数

encode|函数|正则|转换|字符串 <script language=JavaScript RUNAT=SERVER>// 利用正则表达式把用URLEncode的字符串转换成正常的字符串函数function URLDecode(EncodeString) {  var lsRegExp = /\+/g;  return unescape(String(EncodeString).replace(lsRegExp, " ")); }</script> 使用例子

利用正则表达式把用URLEncode的字符串转换成正常的字符串函数

<script language=JavaScript RUNAT=SERVER>// 利用正则表达式把用URLEncode的字符串转换成正常的字符串函数function URLDecode(EncodeString) { var lsRegExp = /+/g; return unescape(String(EncodeString).replace(lsRegExp, " ")); }</script>使用例子:<%response.write Ser