如何在php中拆分两个或多个模式的字符串

时间:2018-01-14 06:03:25

标签: php arrays string split

我想将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]";

谢谢你的回答。

3 个答案:

答案 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