将逗号(,)替换为点(.)正则表达式php

将逗号(,)替换为点(.)正则表达式php,php,regex,Php,Regex,我正在尝试此代码,但出现以下错误:未找到结尾分隔符“/” $form = " 2000,50"; $salary = preg_replace('/',', '.'/', $form); // No ending delimiter '/' found echo $salary; 我对正则表达式的验证不太确定。正则表达式对于只替换一个字符来说太过分了。为什么不干脆这样做呢 str_replace(',', '.', $form); 你可以简单地使用 str_replace(',','.',

我正在尝试此代码,但出现以下错误:
未找到结尾分隔符“/”

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

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

正则表达式对于只替换一个字符来说太过分了。为什么不干脆这样做呢

str_replace(',', '.', $form);
你可以简单地使用

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

但是是的,您并不真正想要匹配一个模式,而是一个常量字符串,因此只需使用
str_replace()

字符串中的“/”用作regex分隔符的开头,因此需要对其进行转义。正确的行应为:

$salary = preg_replace('\\/',', '.'/', $form);
$salary = preg_replace( '/,/', '.', $form);
我也很好奇为什么第二个参数是“,”/”而不是“,/”

编辑

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

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

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

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

第二个参数应该是一个包含句号的字符串,不包含其他内容。这使得:

$salary=preg_替换(“/,/”,“.”,$form)


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

为什么您需要一个正则表达式来完成此操作?确实如此。当螺丝刀足够用的时候,为什么还要使用带有12000个附件的电钻呢?@Midas:基本答案在这方面获得不成比例的投票似乎是一种趋势。在这个例子中,str_replace()的执行速度是preg_replace()的4倍多一点,因此str_replace()显然是最好的选择。