【问题标题】:preg_split does not split multiple delimiterspreg_split 不拆分多个分隔符
【发布时间】:2019-07-07 21:37:17
【问题描述】:

我试图用多个分隔符分割一个简单的字符串,但得到了意想不到的结果。

考虑以下字符串: "1_10_10-Einzel.pdf"

使用此调用 preg_split:

$cut = preg_split("/[_\-\.]/", "1_10_10-Einzel.pdf", PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
print_r($cut);

我希望得到以下输出:

Array
(
    [0] => 1
    [1] => 10
    [2] => 10
    [3] => Einzel
    [4] => pdf
)

,但实际上我得到的是这样的:

Array
(
    [0] => 1
    [1] => 10
    [2] => 10-Einzel.pdf
)

我用括号、标志和当然不同的正则表达式玩了一下,但我没有得到预期的行为。我还尝试了一些与 stackOverflow 完全不同的示例,但也得到了错误的结果。我错过了什么吗?

【问题讨论】:

  • 非正则表达式解决方案:$result = explode('-', str_replace(['_', '.'], '-', '1_10_10-Einzel.pdf'));

标签: php regex preg-split


【解决方案1】:

参数3是限制,4是标志。试试:

$cut = preg_split("/[_.-]/", "1_10_10-Einzel.pdf", -1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
print_r($cut);

https://3v4l.org/hheJg

. 不需要在字符类中转义。 - 也不是第一个或最后一个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多