我想将php中的String拆分为Array,其中包含两个或更多个分隔符。
$string = "[Java , Android , Kotlin]";
我需要:
$mArray[0] = "Java";
$mArray[1] = "Android";
$mArray[2] = "Kotlin";
但是当我使用
时 $mArray = explode(',' , $string);
它让我回复:
$mArray[0] = "[Java";
$mArray[1] = "Android";
$mArray[2] = "Kotlin]";
谢谢你的回答。
答案 0 :(得分:0)
在爆炸之前修复(删除[和])字符串或在之后循环它。
<?php
$string = "[Java , Android , Kotlin]";
// remove [ ] and replace space,space with just ,
$string = str_replace(['[', ']', ' , '], [null, null, ','], $string);
$array = explode(',', $string);
print_r($array);
/*
Array
(
[0] => Java
[1] => Android
[2] => Kotlin
)
*/
或者如下所示,如果字符串保证有space,space
。
<?php
$string = "[Java , Android , Kotlin]";
$string = str_replace(['[', ']'], '', $string);
$array = explode(' , ', $string);
print_r($array);
或者通过foreach或array_walk等爆炸后修复。
<?php
$string = "[Java , Android , Kotlin]";
$array = explode(',', $string);
array_walk($array, function(&$value, $key) {
$value = trim($value, '[] ');
});
print_r($array);
答案 1 :(得分:0)
你需要在爆炸之前替换字符串:
<?php
$string = "[Java , Android , Kotlin]";
$string=str_replace(["[","]"],["",""],$string);
$mArray=explode(',',$string);
print($mArray[0]);
?>
答案 2 :(得分:0)
preg_split怎么样?
$string = "[Java , Android , Kotlin]";
$mArray = preg_split('/\[|\]|\h*,\h*/', $string, -1, PREG_SPLIT_NO_EMPTY);
print_r($mArray);
<强>输出:强>
Array
(
[0] => Java
[1] => Android
[2] => Kotlin
)
正则表达式解释:
/ : regex delimiter
\[ : open bracket
| : OR
\] : close bracket
| : OR
\h*,\h* : a comma between 0 or more horizontal spaces
/ : regex delimiter