我需要将我的字符串输入拆分为逗号中的数组。
我怎样才能完成这项工作?
9,admin@example.com,8
答案 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;
答案 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