如何在PHP中将逗号分隔的字符串拆分为数组?

时间:2009-07-14 14:21:53

标签: php arrays string

我需要将我的字符串输入拆分为逗号中的数组。

我怎样才能完成这项工作?

输入:

9,admin@example.com,8

11 个答案:

答案 0 :(得分:474)

尝试explode

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

输出:

Array
(
    [0] => 9
    [1] => admin@example.com
    [2] => 8
)

答案 1 :(得分:49)

9
admin@example.com
8

输出

[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P ,Q, R, S, T, U, V, W, X, Y, Z]

答案 2 :(得分:31)

$string = '9,admin@google.com,8';
$array = explode(',', $string);

对于更复杂的情况,您可能需要使用preg_split

答案 3 :(得分:30)

如果该字符串来自csv文件,我会使用fgetcsv()(如果你有PHP V5.3,则使用str_getcsv())。这将允许您正确地解析引用的值。如果它不是csv,explode()应该是最佳选择。

答案 4 :(得分:2)

如果您希望零件包含逗号怎么办?好吧,引用它们。那报价呢?好吧,加倍。换句话说:

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

PHP提供了https://php.net/str_getcsv函数来解析字符串,就好像它是CSV文件中的一行一样,可以与上面的行而不是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
)

答案 5 :(得分:1)

代码:

$string = "9,admin@example.com,8";

$array  = explode(",", $string);

print_r($array);

$no = 1;
foreach ($array as $line) {
    echo $no . ". " . $line . PHP_EOL;
    $no++;
};

在线:



body, html, iframe { 
  width: 100% ;
  height: 100% ;
  overflow: hidden ;
}

<iframe src="https://ideone.com/pGEAlb" ></iframe>
&#13;
&#13;
&#13;

答案 6 :(得分:1)

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_split

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 : []));
}

答案 7 :(得分:0)

以简单的方式,您可以使用explode($delimiter, $string);

但从广义上讲,手动编程:

        $string = "ab,cdefg,xyx,ht623";
        $resultArr = [];
        $strLength = strlen($string);
        $delimiter = ',';
        $j = 0;
        $tmp = '';
        for ($i = 0; $i < $strLength; $i++) {
            if($delimiter === $string[$i]) {
                $j++;
                $tmp = '';
                continue;
            }
            $tmp .= $string[$i];
            $resultArr[$j] = $tmp;
        }

Outpou:print_r($resultArr);

Array
(
    [0] => ab
    [1] => cdefg
    [2] => xyx
    [3] => ht623
)

答案 8 :(得分:0)

最好的选择是使用函数“ explode()”。

$content = "dad,fger,fgferf,fewf";
$delimiters =",";
$explodes = explode($delimiters, $content);

foreach($exploade as $explode) {
    echo "This is a exploded String: ". $explode;
}

如果您想要更快的方法,可以使用定界工具,例如Delimiters.co。有很多这样的网站。但是我更喜欢简单的PHP代码。

答案 9 :(得分:0)

使用explode()或preg_split()函数使用给定的分隔符在php中拆分字符串

// 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); 

答案 10 :(得分:0)

如果有人想使用 for-each 将逗号分隔的字符串转换为列表项,那么它将帮助您... 此代码用于刀片模板

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

@foreach ($sep_tag as $tag)
 <li class="collection-item">{{ $tag}}</li>
 @endforeach