【问题标题】:Stripping the Ticket ID out of a String: "[Ticket ID: 9884219]"从字符串中剥离票证 ID:“[票证 ID:9884219]”
【发布时间】:2012-09-05 03:01:59
【问题描述】:

在我的支持票系统中,回复被发送给用户,主题中包含[Ticket ID: ######]

我可以用什么方法通过提供整个标题来去除######?

例如,一个会转这个的函数:

[Ticket ID: 600238] 忘记密码,请重设:(

进入这个:

600238

主题可以以任何字符开头,但票证 ID 括号与主题本身使用空格分隔。

是否有正则表达式可以做到这一点?

【问题讨论】:

    标签: php regex numbers strip ticket-system


    【解决方案1】:

    您可以使用preg_match

    if (preg_match("/\[Ticket ID: (\d+)\]/", $input, $matches)) {
        $ticket_id = $matches[1];
    }
    

    【讨论】:

    • preg_match("[Ticket ID: (\d+)]", "RE: [Ticket ID: 5890684] Hello World", $matches) 不起作用。
    • 您需要转义正则表达式中的括号。我的答案包括这个,而你的测试代码没有。
    • 我确实让它们逃脱了,但 Stack Overflow 在我的评论中删除了它们。
    • 使用主题:RE:[票证 ID:30649722] 找到您好票证 ID:数组中的项目:0
    • @Bailey:你有没有考虑过在出现问题时启用 error_reporting?
    【解决方案2】:

    '[' ']' 在正则表达式中具有空间意义,因此您必须在正则表达式中对其进行转义。 你需要的正则表达式是/\[Ticket ID: [\d]{6}\]/

    如果不确定单词之间的空格数,您可能希望在单词之间使用 [\s]+。

    这个正则表达式会给你完整的Ticket ID: ###### 并且你必须再次提取数字。

    RegExp 非常强大,在这里你可以了解更多关于 RegExp here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多