我试图此代码,但我得到这个错误():No ending delimiter '/' found
替换逗号(,)与点正则表达式PHP
$form = " 2000,50";
$salary = preg_replace('/',', '.'/', $form); // No ending delimiter '/' found
echo $salary;
我不知道正则表达式验证。
我试图此代码,但我得到这个错误():No ending delimiter '/' found
替换逗号(,)与点正则表达式PHP
$form = " 2000,50";
$salary = preg_replace('/',', '.'/', $form); // No ending delimiter '/' found
echo $salary;
我不知道正则表达式验证。
正则表达式替换只是一个单一的字符矫枉过正。为什么不只是这样做呢?
str_replace(',', '.', $form);
确实。为什么在螺丝刀满足的情况下使用带有12,000个附件的电钻? – 2011-06-14 16:46:47
@Midas:在SO上接收不成比例的upvotes似乎是一个基本答案的趋势。 http://stackoverflow.com/questions/4080265/what-does-this-css-do/4080268#4080268和我最热门的答案是例子。 – BoltClock 2011-06-14 16:55:26
在这种情况下,str_replace()的执行速度比preg_replace()快4倍,所以str_replace()显然是最好的选择。 – 2011-06-14 18:32:31
您可以简单地使用
str_replace(',','.',$form);
$salary = preg_replace('/,/', '.', $form);
但是,是的,你真的不想要匹配模式而是一个字符串,它是不变,所以只需使用str_replace()
。
字符串中的'/'用作开始正则表达式分隔符,因此您需要将其转义。正确的行应为:
$salary = preg_replace('\\/',', '.'/', $form);
我也很好奇为什么第二个参数是','。 '/' 而不是 ', /'。
编辑
啊,我现在看到,该行应为:
$salary = preg_replace('/,/', '.', $form);
我很困惑,因为在你的例子中第一个逗号应该是“”连接字符串。
我不明白你的参数 - 我不知道什么是应该在字符串中,什么不是。但对于preg_replace,搜索模式应该是一个字符串,并且字符串也以分隔符开头和结尾(通常为'/')。我认为当搜索字符串已经在字符串中时,需要缩减搜索字符串,但这就是它的工作原理。
第二个参数应该是一个包含句号的字符串,而不是别的。这给出:
$ salary = preg_replace('/,/','。',$ form);
其他人是正确的,str_replace将罚款将一个字符转换成另一个,但如果你想要更换更复杂preg_replace将是合理的。
为什么你需要一个正则表达式呢? – BoltClock 2011-06-14 16:43:06