2014-11-14 16 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 
}