我想检查一个字符串是否包含 a%或 a €。我已经尝试过使用strpbrk这样的方法:$tekens = "€%";if (strpbrk($tekens, $kortingarray['waarde']) !== TRUE){ $return[] = array('status' => 'error', 'field' => 'waarde', 'message' => 'Controleer je waarde');}但这又回来了'status' => 'error'。有什么简单的方法可以做到这一点?
2 回答
慕的地6264312
TA贡献1817条经验 获得超6个赞
strpbrk 的参数顺序错误。另外,这个函数永远不会返回 TRUE,它在找到匹配时返回一个字符串,在未找到匹配时返回 FALSE - 因此,更正后的代码将是:
if (strpbrk($kortingarray['waarde'], $tekens) === FALSE) {
不幸的是,这仍然不起作用,因为strpbrk
它不知道不同的文本编码——只有使用 8 位编码时它才会按预期工作。您的字符串很可能是用 UTF-8 编码的,这意味着您将获得恰好包含用于编码 € 的 3 个字节中的任何一个的任何字符串的匹配项。例如,₩
是一场比赛。
一个可行的解决方案是使用preg_match
:
if (preg_match('/[€%]/u',$kortingarray['waarde']) === 0) {
红颜莎娜
TA贡献1842条经验 获得超12个赞
简单检查我们是否可以检索字符串位置应该适合您的情况。
$yourString = "€%fasdfasdf";
if (strpos($yourString, "€") !== FALSE || strpos($yourString, "%") !== FALSE) {
//DO SOMETHING
}
- 2 回答
- 0 关注
- 112 浏览
添加回答
举报
0/150
提交
取消