数组和字符串互相转换实现方法"/>
PHP 数组和字符串互相转换实现方法
PHP 中由于数组和字符串这两种变量类型是如此常用,以至于 PHP 具有两个函数,可以在字符串和数组之间互相进行转换 代码如下:$array=explode(separator,$string); $string=implode(glue,$array);
使用和理解这两个函数的关键之处是分隔符(separator)和胶合符(glue)关系。当把一个数组转换成一个字符串时,将会设置胶合符——将被插入到生成字符串中的数组值之间的字符或代码。
相反,当把字符串转换成数组时,要指定分隔符,它用于标记什么应该变成独立数组元素。例如,以字符串开始: $s1='Mon-Tue-Wed-Thu-Fri'; $days_array=explode('-',$s1); $days_array 变量现在是一个有5个元素的数组,其元素 Mon 的索引为0,Tue 的索引为1,等等。 $s2=implode(',',$days_array); $s2 变量现在是一个用逗号分隔的一个星期中各天的列表:Mon,Tue,Wed,Thu,Fri
例子 1. explode() 示例
复制代码 代码如下:
<?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; // * ?>
例子 2. limit 参数示例
复制代码 代码如下:
<?php $str = 'one|two|three|four'; // 正数的 limit print_r(explode('|', $str, 2)); // 负数的 limit print_r(explode('|', $str, -1)); ?>
以上示例将输出: Array ( [0] => one [1] => two|three|four ) Array ( [0] => one [1] => two [2] => three )
注: 本函数可安全用于二进制对象。
来源: .htm
在php中字符串分割有很多,如有str_split,explode,chunk_split()函数,下面我给大家分别整理了一些实例. 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
- )
- */
- ?>
- <?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] => 好
- )
- */
- ?>
- <?php
- $data = "e0ab71ab9ed24e627a24e7d65367936393cb3b39db9a9e84d65cd7a9254a4665";
- echo chunk_split($data, 30, "<br />");
- echo implode("<br />",str_split($data,30));
- //和chunk_split效果一样
- ?>
- <?php
- //from Peter from dezzignz 05-Apr-2010 11:30 @ php
- function mbStringToArray ($str) {
- if (emptyempty($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 (emptyempty($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"; //开源代码phpfensi
- echo mb_chunk_split($data, 30, "<br />");
- ?>
- <?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; // *
- ?>
- <?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"
- )
- <?php
- $str = 'one|two|three|four';
- // 正数的 limit
- print_r(explode('|', $str, 2));
- // 负数的 limit(自 PHP 5.1 起)
- print_r(explode('|', $str, -1));
- ?>
- //以上例程会输出:
- //开源代码phpfensi
- Array
- (
- [0] => one
- [1] => two|three|four
- )
- Array
- (
- [0] => one
- [1] => two
- [2] => three
- )
更多推荐
PHP 数组和字符串互相转换实现方法
发布评论