PHP:检查字符串是否包含不在数组中的字符

时间:2016-07-24 20:48:47

标签: php

我想验证字符串是由数字,逗号还是分号组成:

有效:1.234 有效期:1,234 无效:1.23a 无效:1.2_4

什么有效:

使用str_split从字符串中创建数组,并将in_arrayarray(0,1,2,3,4,5,6,7,8,9,',',';')一起使用。

但这让我感到迂回,因为我必须用数百万字符串来做这件事,我想确保没有更有效的方法。

问题:有更有效的方法吗?

2 个答案:

答案 0 :(得分:4)

如果您只需要验证字符串(不清理或修改它),您可以使用正则表达式。请尝试以下方法:

if (preg_match('/^[0-9\,\;\.]+$/', $string)) {
     // ok
} else {
    // not ok
}

答案 1 :(得分:2)

使用preg_match函数的解决方案:

// using regexp for (numbers OR commas OR semicolons) - as you've required
function isValid($str) {
    return (bool) preg_match("/^([0-9.]|,|;)+$/", $str);
}

var_dump(isValid("1.234"));  // bool(true)
var_dump(isValid("1.23a"));  // bool(false)
var_dump(isValid("1,234"));  // bool(true)