我想检查字符串是否包含%
或e
。
我使用strpbrk
进行了尝试,如下所示:
$tekens = "€%";
if (strpbrk($tekens, $kortingarray['waarde']) !== TRUE){
$return[] = array('status' => 'error', 'field' => 'waarde', 'message' => 'Controleer je waarde');
}
但这将返回'status'=>; “error”
。
有什么简单的方法可以做到这一点?
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
}