修改PHP验证脚本以允许使用现金符号和小数

修改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

我有一个用于验证表单的PHP脚本。目前它只允许数字/数字。我尝试了几种方法来修改它,但它要么出错,要么得到500个错误。我只想加上$and。在划界案中

以下是仅验证数字的工作脚本:

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)的东西(如果不是美元符号,则包括第一个字符)。请参阅上的手册。

@jeroen我只是希望字段能够验证资金。允许一个$00。00@jeroen很抱歉,当我提交时,他们停止了维护,当他们返回时,条目不见了,我很快重新开始并复制了错误的文件。几分钟前,当我点击这个问题时,他们不知怎的找到了正确的草稿。但我只是更新了这个哦,我想他们之间必须有一个报价!thanksHow将其调整为正确的顺序会有困难吗?我只会检查第一个字符,如果它是
$
,则对其余字符使用
过滤器变量
,如果不是,则对整个字符串使用它。这将完全取代你的正则表达式。是的,我以前用Jquery做过,但我只是买了这个插件来代替它,我不是很好的php,正如你所说:)@MichaelFalciglia你必须在服务器端做它,但是用php的字符串和过滤函数,这将很好地工作。。。。