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

标签 php regex string

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

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

由于 split 已被弃用,您能否建议一种将字符串拆分为数组的替代方法。我试过爆炸,但它没有达到我的目的。 输出应该是这样的,

Array
(
    [0] => sev
    [1] => yes
    [2] =>  sev1
    [3] =>  no
    [4] =>  sev2
    [5] =>  yes
)

感谢大家的回复。我尝试了 preg_split('[-*]', $string)。它已经拆分了字符串字符。我已将其修改为 preg_split('/[-*]/', $string)。它运作良好。如果您能向我解释其中的区别,那就太好了。

最佳答案

您可以使用 preg_split作为:

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

$array = preg_split('/-|\*/', $string);

或者你也可以使用strtok :

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

编辑:

 preg_split('[-*]', $string);

[ ] 被视为分隔符而不是 char 类,因此您使用正则表达式 -* 进行拆分,这意味着零个或多个连字符。

但是在

preg_split('/[-*]/', $string);

您正在使用正则表达式 [-*],它是匹配 *-

的字符类

关于php - 如何在 PHP 中拆分 * 和 - 上的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3556727/

相关文章:

javascript - 如何在替换函数中传递变量

regex - R:正则表达式环视以获取两个模式之间的内容

php - PHP 中的单词出现次数 - 缩放和优化

java - 将 readline() 的值与字符串进行比较

python - 消除多余的逗号

GoJs 的 Php 数据库格式 json

php - 在 WHERE 中应用 OR 子句或在 Eloquent laravel 中应用 HAVING

python - 正则表达式替换字符串末尾的 '...'

php - Zend_Test_PHPUnit_ControllerTestCase : Test view parameters and not rendered output

php - 在 phpunit.xml 中将进程隔离设置为 false 会导致 Laravel 功能测试失败