Php 多个分隔符上的explode()

Php 多个分隔符上的explode(),php,regex,Php,Regex,我正在尝试使用多个分隔符分解() 使用分隔符: “&” “和” “/” “,” 例如,如果我有这个数组: <?php $lol = array( "Strawberry/Blueberry/Raspberry", "Strawberry, Blueberry, Raspberry", "Strawberry & Blueberry & Raspberry", "Strawberry and Blue

我正在尝试使用多个分隔符分解()

使用分隔符:

  • “&”
  • “和”
  • “/”
  • “,”
例如,如果我有这个数组:

<?php
    $lol = array(
        "Strawberry/Blueberry/Raspberry",
        "Strawberry, Blueberry, Raspberry",
        "Strawberry & Blueberry & Raspberry",
        "Strawberry and Blueberry and Raspberry",
        "Strawberry, Blueberry and Raspberry",
        "Strawberry, Blueberry, Raspberry",
    );
?>
<?php
    $lol = array(
        array("Strawberry","Blueberry","Raspberry"),
        array("Strawberry","Blueberry","Raspberry"),
        array("Strawberry","Blueberry","Raspberry"),
        array("Strawberry","Blueberry","Raspberry"),
        array("Strawberry","Blueberry","Raspberry"),
        array("Strawberry","Blueberry","Raspberry"),
    );
?>
<?php
    $lol = array(
        "Strawberry/Blueberry/Raspberry",
        "Strawberry, Blueberry, Raspberry",
        "Strawberry & Blueberry & Raspberry",
        "Strawberry and Blueberry and Raspberry",
        "Strawberry, Blueberry and Raspberry",
        "Strawberry, Blueberry, Raspberry",
    );
for($i=0;$i<count($lol);$i++){
$tem=str_ireplace("&",",",str_ireplace("/",",",str_ireplace("and",",",$lol[$i])));//first replacing all (& , / , and) with "," then explod with ","
$lol[$i]=explode(",",$tem);}

它将输出以下内容:

<?php
    $lol = array(
        "Strawberry/Blueberry/Raspberry",
        "Strawberry, Blueberry, Raspberry",
        "Strawberry & Blueberry & Raspberry",
        "Strawberry and Blueberry and Raspberry",
        "Strawberry, Blueberry and Raspberry",
        "Strawberry, Blueberry, Raspberry",
    );
?>
<?php
    $lol = array(
        array("Strawberry","Blueberry","Raspberry"),
        array("Strawberry","Blueberry","Raspberry"),
        array("Strawberry","Blueberry","Raspberry"),
        array("Strawberry","Blueberry","Raspberry"),
        array("Strawberry","Blueberry","Raspberry"),
        array("Strawberry","Blueberry","Raspberry"),
    );
?>
<?php
    $lol = array(
        "Strawberry/Blueberry/Raspberry",
        "Strawberry, Blueberry, Raspberry",
        "Strawberry & Blueberry & Raspberry",
        "Strawberry and Blueberry and Raspberry",
        "Strawberry, Blueberry and Raspberry",
        "Strawberry, Blueberry, Raspberry",
    );
for($i=0;$i<count($lol);$i++){
$tem=str_ireplace("&",",",str_ireplace("/",",",str_ireplace("and",",",$lol[$i])));//first replacing all (& , / , and) with "," then explod with ","
$lol[$i]=explode(",",$tem);}


有没有一种有效的方法可以做到这一点?

您可以使用
preg_split()
-然后使用正则表达式来表示“a或b或c”

样本:

<?php
    $lol = array(
        "Strawberry/Blueberry/Raspberry",
        "Strawberry, Blueberry, Raspberry",
        "Strawberry & Blueberry & Raspberry",
        "Strawberry and Blueberry and Raspberry",
        "Strawberry, Blueberry and Raspberry",
        "Strawberry, Blueberry, Raspberry",
    );
    $s = "/\/|, | & | and /";
    foreach ($lol as $v) {
      print_r(preg_split($s, $v));
    }
?>

您可以使用
preg\u split

$arr = preg_split('~ *(?:[/,&]|and) */i~', $str, -1, PREG_SPLIT_NO_EMPTY) 

您可以将分隔符替换为
explode()
将接受的公共分隔符:

foreach($lol as $key => $current) {
    $bits = explode(',', stri_replace(array('/', '&', 'and'), ',', $current));
    $lol[$key] = $bits;
}

对于($i=0;$i试试这个:

<?php
    $lol = array(
        "Strawberry/Blueberry/Raspberry",
        "Strawberry, Blueberry, Raspberry",
        "Strawberry & Blueberry & Raspberry",
        "Strawberry and Blueberry and Raspberry",
        "Strawberry, Blueberry and Raspberry",
        "Strawberry, Blueberry, Raspberry",
    );
?>
<?php
    $lol = array(
        array("Strawberry","Blueberry","Raspberry"),
        array("Strawberry","Blueberry","Raspberry"),
        array("Strawberry","Blueberry","Raspberry"),
        array("Strawberry","Blueberry","Raspberry"),
        array("Strawberry","Blueberry","Raspberry"),
        array("Strawberry","Blueberry","Raspberry"),
    );
?>
<?php
    $lol = array(
        "Strawberry/Blueberry/Raspberry",
        "Strawberry, Blueberry, Raspberry",
        "Strawberry & Blueberry & Raspberry",
        "Strawberry and Blueberry and Raspberry",
        "Strawberry, Blueberry and Raspberry",
        "Strawberry, Blueberry, Raspberry",
    );
for($i=0;$i<count($lol);$i++){
$tem=str_ireplace("&",",",str_ireplace("/",",",str_ireplace("and",",",$lol[$i])));//first replacing all (& , / , and) with "," then explod with ","
$lol[$i]=explode(",",$tem);}