dousonghs58612 2015-07-17 04:41
浏览 38
已采纳

Preg split或preg match从具有已知和常量模式的字符串中提取

I have a database filled with product names, all of wich follow a strict and identical naming pattern like this European 222/555/111 obtained I want to run a 'for each row in table' little php script and extract the 3 substrings in part 222/555/111 and add the three in separate columns but I'm failing to do the extraction.Should I use preg_split or preg_match? My strings all start with the word 'European' then a space and after that the three options I need separated with /, these could also be only 2 characters like European 96/43/55c strings strings

Should have $option1 = 222 $option2 = 555 $option3 = 111

  • 写回答

1条回答 默认 最新

  • douhoushou8385 2015-07-17 10:06
    关注

    I'd use preg_match:

    $string = 'European 222/555/111 obtained';
    
    if (preg_match('~European ([^/]+)/([^/]+)/([^/\s]+)~', $string, $matches)) {
        print_r($matches);
    }
    

    Output:

    Array
    (
        [0] => European 222/555/111
        [1] => 222
        [2] => 555
        [3] => 111
    )
    

    Explanation:

    ~               : regex delimiter
      European\s+   : literally "European" followed by one or more space
      ([^/]+)       : match everything that is not a slash and store in group 1
      /             : a slash
      ([^/]+)       : match everything that is not a slash and store in group 2
      /             : a slash
      ([^/\s]+)     : match everything that is not a slash or a space and store in group 3
    ~               : regex delimiter
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)