我試圖此代碼,但我得到這個錯誤():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