【问题标题】:preg_split string into tokens [duplicate]preg_split 字符串成标记[重复]
【发布时间】:2011-10-31 22:56:35
【问题描述】:

我正在尝试编写一个正则表达式,我可以用它将字符串拆分为标记。这曾经有效:

$rawtokens = split("[^-_A-Za-z0-9]+", $string);

但现在 split() 已被弃用(建议使用 preg_split),这不起作用:

$rawtokens = preg_split("[^-_A-Za-z0-9]+", $string);

我得到的错误是 +\ 是一个未知的修饰符。从 split 到 preg_split 的迁移发生了什么变化?

【问题讨论】:

    标签: php regex preg-split


    【解决方案1】:

    PCRE 正则表达式需要delimiters

    $rawtokens = preg_split("/[^-_A-Za-z0-9]+/", $string);
                             ^               ^
    

    【讨论】:

      【解决方案2】:

      尝试转义 - 并添加分隔符:

      $rawtokens = preg_split("/[^\-_A-Za-z0-9]+/", $string);
      

      【讨论】:

      • 没有必要在字符类的开头或结尾处转义 - 字符,因为在这些位置它的含义是明确的
      • @meouw:养成良好的正则表达式习惯是件好事。
      • 您建议将转义作为答案的一部分 - 转义在这里无关紧要
      【解决方案3】:

      你可以使用T-Regx tool,你不需要分隔符:)

      pattern('[^-_A-Za-z0-9]+')->split($string);
      

      【讨论】:

        猜你喜欢
        • 2012-09-19
        • 1970-01-01
        • 2014-10-06
        • 2021-08-17
        • 2013-10-05
        • 1970-01-01
        • 1970-01-01
        • 2015-07-13
        • 1970-01-01
        相关资源
        最近更新 更多