如何在PHP中拆分字符串*和 - ?

sat*_*tya 2 php regex string

为了拆分字符串,我使用了以下代码.

$string = "-sev*yes-sev1*no-sev2*yes";
split('[-*]', $string).
Run Code Online (Sandbox Code Playgroud)

由于拆分已弃用,您能否建议一种将字符串拆分为数组的替代方法.我试过爆炸,但它不符合我的目的.输出应该看起来像,

Array
(
    [0] => sev
    [1] => yes
    [2] =>  sev1
    [3] =>  no
    [4] =>  sev2
    [5] =>  yes
)
Run Code Online (Sandbox Code Playgroud)

谢谢大家的回复preg_split('[-*]', $string)..我试过了.它具有明智的字符串特征.我已将其修改为preg_split('/[-*]/', $string).它运作良好.如果你能解释我的区别,那将是很棒的.

Pet*_*lek 5

您可以使用explodepreg_split

  • 在这里爆炸替代品吗?他需要正则表达式使用'[-*]',eplode不处理正则表达式。 (3认同)

cod*_*ict 5

你可以使用preg_split:

$string = "-sev*yes-sev1*no-sev2*yes";
$array = preg_split('/-|\*/', $string,-1, PREG_SPLIT_NO_EMPTY);
Run Code Online (Sandbox Code Playgroud)

要么

$array = preg_split('/-|\*/', $string);
Run Code Online (Sandbox Code Playgroud)

或者您也可以使用strtok:

$tok = strtok($string, "-*");
$array = array();
while ($tok !== false) {
    $array[] = $tok;
    $tok = strtok("-*");
}
Run Code Online (Sandbox Code Playgroud)

编辑:

 preg_split('[-*]', $string);
Run Code Online (Sandbox Code Playgroud)

[ ]被视为分隔符,而不是作为焦炭类,因此您所使用的正则表达式-*的分裂,这意味着零个或多个连字符.

但在

preg_split('/[-*]/', $string);
Run Code Online (Sandbox Code Playgroud)

你正在使用正则表达式[-*]匹配任何一个*或一个-