하나 이상의 공백 또는 탭으로 문자열 분해


141

하나 이상의 공백 또는 탭으로 문자열을 분해하려면 어떻게해야합니까?

예:

A      B      C      D

이것을 배열로 만들고 싶습니다.


0 개 이상의 공백은 각 요소가 최대 하나의 문자를 갖거나 빈 요소가 무한히 많다는 것을 의미합니다. 이것이 당신이 원하는 것입니까?
bdonlan

네, 아마도 "하나 이상의 공백"이어야합니다.
Michael Myers

답변:


323
$parts = preg_split('/\s+/', $str);

5
$ parts 마지막 요소는 공백입니다 .. 제거하려면 array_pop ($ parts);
user889030

1
@lucsan의 답변이 최고의 답변이어야합니다 ( stackoverflow.com/a/38481324/1407491 )
Nabi KAZ

6
비어있을 수있는 마지막 부분을 제거하는 대신 다음을 사용할 수 있습니다.$parts = preg_split('/\s+/', $str, -1, PREG_SPLIT_NO_EMPTY);
coeing

49

탭으로 분리하려면 :

$comp = preg_split("/[\t]/", $var);

공백 / 탭 / 줄 바꾸기로 구분하려면 다음을 수행하십시오.

$comp = preg_split('/\s+/', $var);

공백만으로 분리하려면 :

$comp = preg_split('/ +/', $var);


23

이것은 작동합니다 :

$string = 'A   B C          D';
$arr = preg_split('/[\s]+/', $string);

19

저자는 폭발을 요청했습니다.

$resultArray = explode("\t", $inputString);

참고 : 작은 따옴표가 아닌 큰 따옴표를 사용해야합니다.


나를 위해 일했고 정규 표현식의 어두운 힘을 사용하는 것보다 조금 더 간단합니다.
David '대머리 생강

8
그러나 그는 "공백 또는 탭"을 요청했고 이것은 탭만 폭발합니다.
Jeff

2
나는 폭발하는 공간을 찾기 위해 여기에 왔습니다. 나는 이것에 대해 깊은 슬픔을 느낀다.
Sergio A.

10

나는 당신이 원하는 것 같아요 preg_split:

$input = "A  B C   D";
$words = preg_split('/\s+/', $input);
var_dump($words);



0

다른 사람들 (Ben James)이 제공 한 답변은 꽤 좋으며 사용했습니다. user889030이 지적했듯이 마지막 배열 요소는 비어있을 수 있습니다. 실제로 첫 번째 및 마지막 배열 요소는 비어있을 수 있습니다. 아래 코드는 두 가지 문제를 모두 해결합니다.

# Split an input string into an array of substrings using any set
# whitespace characters
function explode_whitespace($str) {  
  # Split the input string into an array
  $parts = preg_split('/\s+/', $str);
  # Get the size of the array of substrings
  $sizeParts = sizeof($parts);
  # Check if the last element of the array is a zero-length string
  if ($sizeParts > 0) {
    $lastPart = $parts[$sizeParts-1];
    if ($lastPart == '') {
      array_pop($parts);
      $sizeParts--;
    }
    # Check if the first element of the array is a zero-length string
    if ($sizeParts > 0) {
      $firstPart = $parts[0];
      if ($firstPart == '') 
        array_shift($parts); 
    }
  }
  return $parts;   
}

-2
Explode string by one or more spaces or tabs in php example as follow: 

   <?php 
       $str = "test1 test2   test3        test4"; 
       $result = preg_split('/[\s]+/', $str);
       var_dump($result);  
    ?>

   /** To seperate by spaces alone: **/
    <?php
      $string = "p q r s t";   
      $res = preg_split('/ +/', $string);
      var_dump($res);
    ?>


-5

@OP 그것은 중요하지 않습니다, 당신은 폭발로 공간에서 나눌 수 있습니다. 해당 값을 사용하기 전까지는 분해 된 값을 반복하고 공백을 버립니다.

$str = "A      B      C      D";
$s = explode(" ",$str);
foreach ($s as $a=>$b){    
    if ( trim($b) ) {
     print "using $b\n";
    }
}

4
탭으로 구분 된 값은 어떻습니까?
dotancohen

탭으로 구분 된 값은 폭발하지 않습니다.
NekojiruSou
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.