【问题标题】:how to split a string with two or more pattern in php如何在php中拆分具有两个或多个模式的字符串
【发布时间】:2018-01-14 06:03:24
【问题描述】:

我想将 php 中的字符串拆分为数组,其中包含两个或多个分隔符。

$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]";

谢谢你的回答。

【问题讨论】:

  • 你是怎么得到这个字符串的?为什么不以以后可以轻松使用的方式存储数据?
  • 我从 Android Java 得到它。它是一个转换为字符串的数组
  • 在爆炸前删除第一个和最后一个字符?
  • 相当肯定 Android Java 将具有 JSON 功能,可以将您的数组转换为其他东西可以读取的格式。

标签: php arrays string split


【解决方案1】:

要么在爆炸之前修复(删除 [ 和 ])字符串,要么在之后循环它。

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

【讨论】:

  • 我用了这个 $string = str_replace('[',"",$string); $string = str_replace(']',"",$string);而不是 $string = str_replace(['[', ']'], '', $string);
  • 没关系,但你不需要调用两次,你可以像上面一样传递一个数组。
  • 我这样做了,但它在我的 HostServices 中捕获了错误
  • 我不知道这意味着什么,如果您仍然有问题,请使用您使用的当前代码更新您的问题。
【解决方案2】:

explode前需要替换字符串:

<?php 

$string = "[Java , Android , Kotlin]";
$string=str_replace(["[","]"],["",""],$string);
$mArray=explode(',',$string);
print($mArray[0]);

?>

【讨论】:

    【解决方案3】:

    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
    

    【讨论】:

      猜你喜欢
      • 2012-01-05
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      • 2012-12-27
      • 2010-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多