0

我正在寻找用于strpos检查字符串中的许多字符,例如:

我想分别检查 $string 中的 chars :!&。如果在任何时候找到它们中的任何一个,则返回 false。

最有效的方法是什么?谢谢!

4

3 回答 3

2

利用preg_match

preg_match("/[:!&]/", $string) !== 1;

例子:

var_dump(preg_match("/[:!&]/", "this is !a test string"));
> int(1)
var_dump(preg_match("/[:!&]/", "this is a test string"));
> int(0)

如果模式匹配给定的主题,preg_match() 返回 1,如果不匹配,则返回 0,如果发生错误,则返回 FALSE。

于 2012-12-31T20:17:48.723 回答
1

如果找到其中任何一个,则返回 false。

由于您不关心角色的实际位置,您可以使用正则表达式:

preg_match("/[:!&]/", $str); // 1 if found, 0 if none found
于 2012-12-31T20:17:30.490 回答
1

如果您的帖子是准确的,并且您尝试做的是在找到这些字符串时返回 FALSE,那么这strpos()不是正确的功能。strpos()是查找字符串中某些字符(或字符串)首先出现的位置。

如果您陈述的目标是准确的,您可能想要更多类似的东西:

if( preg_match( "/[\:\!&]/", $str ) > 0 ) { return false; }
于 2012-12-31T20:20:00.573 回答