将长串分成小串。 - 试图找到一种优雅的方式

时间:2010-09-06 14:27:51

标签: php string split

如果字符串大于50个字符长,我需要拆分它。 允许的最大值是3个50块。它可能小于50但不会超过150。 我不需要添加任何特殊字符,也不需要作为“分离器”;我可以在任何地方打破字符串,没问题,因为建议不是为了向用户显示它。

if (strlen($street) > 50)
{
  $streetPart1 = substr($street,0,50);
  $streetPart2 = substr($street,51,100);
  $streetPart3 = substr($street,101,150);
}

这样做有更优雅的方法吗?

更新:

接下来会到达的一个例子:

if (strlen($street) > 50)
{
   $streetPart1 = substr($street,0,50);

   $streetPart2 = substr($street,51,100);

   $streetPart3 = substr($street,101,150);

   if(!empty($streetPart2) && empty($streetPart3) 
   {
      //add part2 only.
   }elseif(!empty($streetPart2 && !empty($streetPart3))
   {
     //add part 2 and part 3
   }
}

非常感谢。 MEM

3 个答案:

答案 0 :(得分:4)

您可以简单地使用str_split

$parts = str_split($string, 50);

// if you want to have vars instead of array:
list($part1, $part2, $part3) = str_split($string, 50);

答案 1 :(得分:1)

答案 2 :(得分:1)

<?
    function wrapAndCropToArray($text, $width, $lines)
    {
        $ret = array_slice(
            explode("\n",wordwrap($text,$width,"\n",true))
            , 0
            , $lines+1
        );
        if(isset($ret[$lines]))
            $ret[$lines] = "...";
        return $ret;
    }

    $test = "aadfuiosdy 34 123 412 341f2 38947 1029 384h120 39uh4 19023h 41234";
    var_dump(wrapAndCropToArray($test,10,3));
?>

将输出:

array(4) {
  [0]=>
  string(10) "aadfuiosdy"
  [1]=>
  string(10) "34 123 412"
  [2]=>
  string(5) "341f2"
  [3]=>
  string(3) "..."
}