我正在尝试运行这段代码,但是出现了以下错误:No ending delimiter '/' found
$form = " 2000,50";
$salary = preg_replace('/',', '.'/', $form); // No ending delimiter '/' found
echo $salary;
我不确定正则表达式的验证方法。
对于只替换一个字符来说,正则表达式有些过度了。为什么不直接这样做呢?
str_replace(',', '.', $form);
$salary = preg_replace('/,/', '.', $form);
但是,你并不真正想匹配一个模式,而是一个常量字符串,所以只需使用str_replace()
。
str_replace(',','.',$form);
我不理解你的参数 - 我不确定字符串中应该包含什么和不应该包含什么。但是对于 preg_replace,搜索模式应该是一个字符串,并且这个字符串的开头和结尾也要有定界符(通常是“/”)。我认为,在搜索字符串已经在一个字符串内部时需要斜杠是多余的,但这就是它的工作方式。
第二个参数应该是一个只包含句点的字符串。这会得到:
$salary = preg_replace( '/,/' , '.' , $form);
其他人说用 str_replace 把一个字符替换成另一个字符没问题,但如果你想要更复杂的替换,preg_replace 也是合理的。
你字符串中的'/'被用作正则表达式的起始定界符,因此需要对其进行转义。正确的代码应该是:
$salary = preg_replace('\\/',', '.'/', $form);
我也很好奇为什么第二个参数是', ' . '/'而不是', /'。
编辑
啊,我现在明白了,这一行应该写成:
$salary = preg_replace( '/,/', '.', $form);