首页 >社区问答列表 >php 把字符串打散成字符数组,有什么简便方法吗?

php 把字符串打散成字符数组,有什么简便方法吗?

譬如我想把$str = 'adfdf' 变成 ['a', 'd', 'f', 'd', 'f']这样的数组

  • 曾经蜡笔没有小新
  • 曾经蜡笔没有小新    2017-06-21 10:13:289楼

    之前做过字符串对比的lcs算法 里面涉及到对字符串的打散成数组,由于涉及到中文的问题 直接使用str_split是不行的 要使用preg_split

    你可以封装一个公共函数
    
    function mb_str_split($str)
    {
        return preg_split('/(?<!^)(?!$)/u' , $str);
    }

    +0添加回复

  • 回复
  • 我想大声告诉你
  • 我想大声告诉你    2017-06-21 10:13:288楼

    $string = '中国共产党万岁!aaaaa';
    var_dump(preg_split('//u', $string, 0, PREG_SPLIT_NO_EMPTY));
    /*
    array (size=13)
      0 => string '中' (length=3)
      1 => string '国' (length=3)
      2 => string '共' (length=3)
      3 => string '产' (length=3)
      4 => string '党' (length=3)
      5 => string '万' (length=3)
      6 => string '岁' (length=3)
      7 => string '!' (length=3)
      8 => string 'a' (length=1)
      9 => string 'a' (length=1)
      10 => string 'a' (length=1)
      11 => string 'a' (length=1)
      12 => string 'a' (length=1)
     */

    +0添加回复

  • 回复
  • 学习ing
  • 学习ing    2017-06-21 10:13:285楼

    $str = 'adfdf';
    $arr = [];
    for($i=0;$i<strlen($str);$i++) {
    $arr[$i] = $str{$i};
    }
    
    var_dump($arr);
    $str = 'adfdf';
    preg_match_all('/(\w{1})/', $str, $matches);
    var_dump($matches[0]);

    +0添加回复

  • 回复
  • phpcn_u1582
  • phpcn_u1582    2017-06-21 10:13:284楼

    $str = 'adfdf';
    $temp = array();
    for ($i = 0; $i < strlen($str); $i++) {
        array_push($temp, $str{$i});
    }
    var_dump($temp);

    +0添加回复

  • 回复
  • 巴扎黑
  • 巴扎黑    2017-06-21 10:13:283楼

    $str = 'adfdf';

        $len = mb_strlen($str);
        $arr = [];
        if(!isset($str[0])) {
            exit('输入合理字符串!');
        }
        $rb = function ($index = 0) use (&$rb, &$arr, $str, $len) {
             array_push($arr, mb_substr($str, $index, 1,'UTF-8'));
            $index++;
            if ($index == $len) return $arr;
            $rb($index);
        };
        $rb();
        header("Content-type: text/html; charset=UTF-8");
       var_dump($arr);

    +0添加回复

  • 回复
  • 代言
  • 代言    2017-06-21 10:13:282楼

    <?php
    $str = 'adfdf';
    $arr = array();
    for($i=0;$i<strlen($str);$i++) {
    $arr[$i] = $str[$i];
    }
    print_r($arr);
    ?>

    +0添加回复

  • 回复