source

쉼표로 구분된 문자열을 배열로 분할하시겠습니까?

factcode 2022. 9. 12. 11:33
반응형

쉼표로 구분된 문자열을 배열로 분할하시겠습니까?

문자열 입력을 콤마에서 배열로 분할해야 합니다.

콤마로 구분된 문자열을 평평한 색인 배열로 분해하는 방법이 있습니까?

입력:

9,admin@example.com,8

출력:

['9', 'admin@example', '8']  

폭발 시도:

$myString = "9,admin@example.com,8";
$myArray = explode(',', $myString);
print_r($myArray);

출력:

Array
(
    [0] => 9
    [1] => admin@example.com
    [2] => 8
)
$string = '9,admin@google.com,8';
$array = explode(',', $string);

보다 복잡한 상황에서는 를 사용해야 할 수 있습니다.

만약 그 문자열이 csv 파일에서 온 것이라면, 저는 (또는 PHP V5.3을 가지고 있는 경우)를 사용합니다.그러면 인용된 값을 올바르게 구문 분석할 수 있습니다.CSV가 아닌 경우 를 선택하는 것이 가장 좋습니다.

부품에 쉼표를 넣으려면 어떻게 해야 합니까?그럼, 인용해보죠.그리고 인용문은요?그럼, 두 배로 해즉, 다음과 같습니다.

part1,"part2,with a comma and a quote "" in it",part3

PHP는 CSV 파일의 행인 것처럼 문자열을 구문 분석할 수 있는 https://php.net/str_getcsv 함수를 제공합니다.이 함수는 위의 행과 함께 사용할 수 있습니다.explode:

print_r(str_getcsv('part1,"part2,with a comma and a quote "" in it",part3'));
Array
(
    [0] => part1
    [1] => part2,with a comma and a quote " in it
    [2] => part3
)

explode에는, 실생활에서의 사용에 있어서 몇개의 큰 문제가 있습니다.

count(explode(',', null)); // 1 !! 
explode(',', null); // [""] not an empty array, but an array with one empty string!
explode(',', ""); // [""]
explode(',', "1,"); // ["1",""] ending commas are also unsupported, kinda like IE8

이것이 내가 preg_frecision을 선호하는 이유다.

preg_split('@,@', $string, NULL, PREG_SPLIT_NO_EMPTY)

전체 보일러 플레이트:

/** @brief wrapper for explode
 * @param string|int|array $val string will explode. '' return []. int return string in array (1 returns ['1']). array return itself. for other types - see $as_is
 * @param bool $as_is false (default): bool/null return []. true: bool/null return itself.
 * @param string $delimiter default ','
 * @return array|mixed
 */
public static function explode($val, $as_is = false, $delimiter = ',')
{
    // using preg_split (instead of explode) because it is the best way to handle ending comma and avoid empty string converted to ['']
    return (is_string($val) || is_int($val)) ?
        preg_split('@' . preg_quote($delimiter, '@') . '@', $val, NULL, PREG_SPLIT_NO_EMPTY)
        :
        ($as_is ? $val : (is_array($val) ? $val : []));
}

지정된 딜리미터를 사용하여 php의 문자열을 분할하려면 plaste() 또는 preg_split() 함수를 사용합니다.

// Use preg_split() function 
$string = "123,456,78,000";  
$str_arr = preg_split ("/\,/", $string);  
print_r($str_arr); 
  
// use of explode 
$string = "123,46,78,000"; 
$str_arr = explode (",", $string);  
print_r($str_arr); 

for-를 사용하여 쉼표로 구분된 문자열을 목록 항목으로 변환하려는 사용자가 있으면 도움이 됩니다.이 코드는 블레이드 템플릿용입니다.

@php
$data = $post->tags;
$sep_tag= explode(',', $data);
@endphp

@foreach ($sep_tag as $tag)
 <li class="collection-item">{{ $tag}}</li>
 @endforeach 
//Re-usable function
function stringToArray($stringSeperatedCommas)
{
    return collect(explode(',', $stringSeperatedCommas))->map(function ($string) {
        return trim($string) != null ? trim($string) : null;
    })->filter(function ($string) {
        return trim($string) != null;
    });
}

//Usage
$array = stringToArray('abcd, , dsdsd, dsds');
print($array);

//Result
{ "abcd", "dsdsd", "dsds" }

언급URL : https://stackoverflow.com/questions/1125730/split-a-comma-delimited-string-into-an-array

반응형