【问题标题】:Replace Comma(,) with Dot(.) RegEx php用点(。)RegEx php替换逗号(,)
【发布时间】:2011-09-14 21:01:33
【问题描述】:

我正在尝试此代码,但出现此错误:No ending delimiter '/' found

$form = " 2000,50";
$salary = preg_replace('/',', '.'/', $form); // No ending delimiter '/' found 
echo $salary;

我不确定正则表达式验证。

【问题讨论】:

  • 为什么需要正则表达式?

标签: php regex


【解决方案1】:

正则表达式对于仅替换单个字符来说太过分了。为什么不直接这样做呢?

str_replace(',', '.', $form);

【讨论】:

  • 确实如此。一把螺丝刀就够了,为什么还要用12000个附件的电钻?
  • @Midas:基本答案在 SO 上获得不成比例的支持似乎是一种趋势。 stackoverflow.com/questions/4080265/what-does-this-css-do/… 我的大部分最佳答案都是示例。
  • 在这种情况下,str_replace() 的执行速度比 preg_replace() 快 4 倍多一点,因此 str_replace() 显然是最佳选择。
【解决方案2】:

你可以简单地使用

str_replace(',','.',$form);

【讨论】:

    【解决方案3】:
    $salary = preg_replace('/,/', '.', $form);
    

    但是,是的,您并不是真的想匹配一个 pattern,而是一个 constant 的字符串,所以只需使用 str_replace()

    【讨论】:

      【解决方案4】:

      字符串中的“/”用作正则表达式的开始分隔符,因此您需要对其进行转义。正确的行应该是:

      $salary = preg_replace('\\/',', '.'/', $form);
      

      我也很好奇为什么第二个参数是 ', ' 。 '/' 而不是 ', /'。

      编辑

      啊,我现在明白了,该行应该是:

      $salary = preg_replace( '/,/', '.', $form);
      

      我很困惑,因为您示例中的第一个逗号应该是“。”连接字符串。

      【讨论】:

        【解决方案5】:

        我不明白你的参数——我不确定字符串中应该包含什么,什么不是。但是对于 preg_replace,搜索模式应该是一个字符串,并且该字符串也以分隔符开始和结束(通常是 '/')。我认为当搜索字符串已经在字符串中时,需要在搜索字符串周围加上斜杠是多余的,但这就是它的工作原理。

        第二个参数应该是一个包含句号的字符串,没有别的。这给出了:

        $salary = preg_replace('/,/', '.', $form);

        其他人认为 str_replace 可以将一个字符转换为另一个字符是正确的,但是如果您想要的替换变得更复杂 preg_replace 将是合理的。

        【讨论】:

          猜你喜欢
          • 2011-06-18
          • 1970-01-01
          • 1970-01-01
          • 2022-01-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多