提问者:小点点

如何使用PHP[duplication]检查字符串是否包含两个字符之一


我想检查字符串是否包含%e

我使用strpbrk进行了尝试,如下所示:

$tekens = "€%";
if (strpbrk($tekens, $kortingarray['waarde']) !== TRUE){
    $return[] = array('status' => 'error', 'field' => 'waarde', 'message' => 'Controleer je waarde');
}

但这将返回'status'=>; “error”

有什么简单的方法可以做到这一点?


共2个答案

匿名用户

strpbrk的参数顺序错误。 此外,该函数从不返回TRUE,在找到匹配项时返回字符串,在没有匹配项时返回FALSE.请参阅文档:https://www.php.net/manual/en/function.strpbrk.php.因此,更正后的代码为:

if (strpbrk($kortingarray['waarde'], $tekens) === FALSE) {

不幸的是,这仍然不起作用,因为strpbrk不知道不同的文本编码--只有使用8位编码时,它才会像预期的那样工作。 您的字符串很可能是用UTF-8编码的,这意味着您将获得任何字符串的匹配项,只要该字符串恰好包含用于编码欧元的3个字节中的任何一个。 例如,是匹配的。

一个有效的解决方案是使用preg_match:

if (preg_match('/[€%]/u',$kortingarray['waarde']) === 0) {

匿名用户

一个简单的检查,如果我们可以检索字符串位置应该在您的情况下工作。

$yourString = "€%fasdfasdf";

if (strpos($yourString, "€") !== FALSE || strpos($yourString, "%") !== FALSE) {
    //DO SOMETHING
}