2014-11-14 51 views
0

我有一個像的preg_match功能檢查幣值

£523.22 
9454 
££45523 
741.03 
etc 

一些值我想從價值刪除此£並檢查它是否有效vaue或不那麼,我可以將它們插入到數據庫 我與preg_match() or similar function for checking currency .Y

$job_order=(preg_match("/^[£]*[0-9]*(.[0-9]*)?$/",$value) ? str_replace("£","",$value) : ''); 

如果$值=則523.22£其返回空的幫助下創建以下表達式。但是如果它的741.03成功了,我不知道這個preg_match有什麼問題。 餘米進口從.Mer這個值(合併)文件。如果我簡單的寫$值=£523.22然後它的工作,但是當它從文件中讀取值,那麼它不是識別井號

+2

您可以刪除英鎊標記,並檢查其餘的是一個數字。 'is_numeric()' – zaynetro 2014-11-14 12:13:39

+0

是的,我試過了,如果我刪除了磅標記,那麼它的工作 – kreya 2014-11-14 12:19:32

+0

你對數字格式(千分隔符,小數點數,前導小數點,最大值和最小值)的判斷是什麼?貨幣符號可以結束嗎?它總是一個英鎊? – 2014-11-14 12:21:52

回答

0

如何:

$value = preg_replace(/'£(?=\d+)/' , '', $value); 

,或者,如果值可以是£.50

$value = preg_replace(/'£(?=\.?\d+)/' , '', $value); 
+0

它不刪除英鎊符號我的意思是經常exp不符合值 – kreya 2014-11-14 12:29:10

+0

@Kreya:對不起,我不明白你。也許你想修改你的問題並添加一些示例字符串和預期結果。 – Toto 2014-11-14 13:07:03

+0

感謝您的回覆。我編輯了我的問題。 – kreya 2014-11-14 13:10:27

0

嘗試一下本作的貨幣匹配/^((?:\d{1,3}[,\.]?)+\d*)$/

(preg_match('/^((?:\d{1,3}[,\.]?)+\d*)$/',,$value) ? str_replace("£","",$value) : ''); 

\d{1,3}一個三位數

您可以使用\d{1,X}

+0

感謝您的回覆。在這裏它不會消除英鎊符號。對於523.22英鎊它給予null值,而不是523.22 – kreya 2014-11-14 12:24:08

+0

你可以逐行調試代碼我認爲我的答案是適合你的......你可以改變這一行代碼而不是str_replace(「£」,「」,$ value ) – Ali 2014-11-14 12:28:12

+0

請訪問下面的鏈接,它會幫助你http://stackoverflow.com/questions/4982291/how-to-check-if-an-entered-value-is-currency – Ali 2014-11-14 12:30:27

1

您可以使用此增加數:

$job_order = strtr($value, '£', ''); 
if (is_numeric($job_order)) { 
    // valid 
} else { 
    // invalid 
}