修改PHP验证脚本以允许使用现金符号和小数
我有一个用于验证表单的PHP脚本。目前它只允许数字/数字。我尝试了几种方法来修改它,但它要么出错,要么得到500个错误。我只想加上$and。在划界案中 以下是仅验证数字的工作脚本:修改PHP验证脚本以允许使用现金符号和小数,php,Php,我有一个用于验证表单的PHP脚本。目前它只允许数字/数字。我尝试了几种方法来修改它,但它要么出错,要么得到500个错误。我只想加上$and。在划界案中 以下是仅验证数字的工作脚本: class Quform_Filter_Digits implements Quform_Filter_Interface { /** * Whether to allow white space characters; off by default * @var boolean
class Quform_Filter_Digits implements Quform_Filter_Interface
{
/**
* Whether to allow white space characters; off by default
* @var boolean
*/
protected $_allowWhiteSpace = false;
/**
* Class constructor
*
* @param array $options
*/
public function __construct($options = null)
{
if (is_array($options)) {
if (array_key_exists('allowWhiteSpace', $options)) {
$this->setAllowWhiteSpace($options['allowWhiteSpace']);
}
}
}
/**
* Filter everything from the given value except digits
*
* @param string $value The value to filter
* @return string The filtered value
*/
public function filter($value)
{
$whiteSpace = $this->_allowWhiteSpace ? '\s' : '';
$pattern = '/[^0-9' . $whiteSpace .']/';
return preg_replace($pattern, '', (string) $value);
}
/**
* Whether or not to allow white space
*
* @param boolean $flag
* @return Quform_Filter_Digits
*/
public function setAllowWhiteSpace($flag)
{
$this->_allowWhiteSpace = (bool) $flag;
return $this;
}
/**
* Is white space allowed?
*
* @return boolean
*/
public function getAllowWhiteSpace()
{
return $this->_allowWhiteSpace;
}
}
您可以修改正则表达式模式以允许更多字符:
$pattern = '/[^0-9.$' . $whiteSpace .']/';
但这并不能保证正确的订单,例如12$.17
。另一种方法是单独检查第一个字符,因为这是唯一可以是$
符号的字符,您必须确定它是否可以是
如果您决定单独检查第一个字符,您可以简单地使用类似于
filter\u var($value,filter\u VALIDATE\u FLOAT)的东西其余字符上的code>(如果不是美元符号,则包括第一个字符)。请参阅上的手册。@jeroen我只是希望字段能够验证资金。允许一个$00。00@jeroen很抱歉,当我提交时,他们停止了维护,当他们返回时,条目不见了,我很快重新开始并复制了错误的文件。几分钟前,当我点击这个问题时,他们不知怎的找到了正确的草稿。但我只是更新了这个哦,我想他们之间必须有一个报价!thanksHow将其调整为正确的顺序会有困难吗?我只会检查第一个字符,如果它是$
,则对其余字符使用过滤器变量
,如果不是,则对整个字符串使用它。这将完全取代你的正则表达式。是的,我以前用Jquery做过,但我只是买了这个插件来代替它,我不是很好的php,正如你所说:)@MichaelFalciglia你必须在服务器端做它,但是用php的字符串和过滤函数,这将很好地工作。。。。