不使用正则表达式的PHP验证表单

时间:2019-04-02 21:00:40

标签: php

我正在使用HTML表单,然后将其发送到我的php脚本中,在这里应检查html表单中的值是否为十进制。如果没有,则php应该使用带有红色字体颜色的echo打印它,如果它与标准黑色字体是正确的话。

首先,我不能使用正则表达式来检查它是否正式有效。 有任何线索吗?

1 个答案:

答案 0 :(得分:1)

有两种方法可以实现:

<?php
$values = [
    '1',
    '1.1',
    '.11',
    'foo'
];

foreach( $values as $value ){
    if( $value > floor($value) ){
        echo '<p>is decimal</p>';
    }else{
        echo '<p style="color:red">not decimal</p>';
    }
}

echo '<hr>';

foreach( $values as $value ){
    if( is_numeric($value) && (1 === substr_count($value, '.')) ){
        echo '<p>is decimal</p>';
    }else{
        echo '<p style="color:red">not decimal</p>';
    }
}

第一种方法是将值与自身floor()版的版本进行比较。

或者,检查值is_numeric(),然后检查字符串是否有小数。

编辑:@ArtisticPhoenix建议将第二种方法从substr()更改为substr_count(),因为可能存在> =两个小数。