【问题标题】:PHP preg_replace() - comma separated values?PHP preg_replace() - 逗号分隔值?
【发布时间】:2012-08-03 03:42:32
【问题描述】:

我有一个巨大的字符串,其中某处是“字母、数字、数字”的部分,我正在尝试找到该部分并使用 preg_replace() 更新这两个数字。我无法弄清楚正则表达式。这是我所拥有的:

preg_replace('/'.$slug.',{0-9},{0-9}/', $slug.','.$num1.','.$num2, $mystring);

但它不起作用。我是一个正则表达式新手,有人可以帮忙吗?谢谢!

【问题讨论】:

    标签: php regex preg-replace


    【解决方案1】:

    试试这个:

    preg_replace('/'.preg_quote($slug).',\d+,\d+/', $slug.','.$num1.','.$num2, $mystring);
    

    【讨论】:

    • 虽然这是一个好的开始,但我相信 OP 的问题还有更多。
    • 看起来像我想要的,但给了我“未知修饰符'/'”。尝试删除斜线但没有骰子?
    • 使用 preg_quote($slug),你可以使用 Nathanael Shermett 的另一个解决方案
    【解决方案2】:

    你想这样做:

    $result = preg_replace('/('.$slug.'),([0-9]*),([0-9]*)/', '$1,'.$num1.','.$num2, $subject);
    

    【讨论】:

      【解决方案3】:

      根据您提到的基于另一个示例的错误判断,$slug 似乎正在干扰正则表达式。 preg_quote() 有助于防止这种情况发生,转义保留字符。

      试试这个:

      preg_replace('/' . preg_quote($slug) . ',{0-9},{0-9}/', "$slug,$num1,$num2", $mystring);
      

      【讨论】:

      • 编辑:回答了我自己的问题,preg_quote 需要第二个 '/' 参数!
      猜你喜欢
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      相关资源
      最近更新 更多