我想檢查一個字符串是否包含 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條經驗 獲得超13個贊
簡單檢查我們是否可以檢索字符串位置應該適合您的情況。
$yourString = "€%fasdfasdf";
if (strpos($yourString, "€") !== FALSE || strpos($yourString, "%") !== FALSE) {
//DO SOMETHING
}
- 2 回答
- 0 關注
- 142 瀏覽
添加回答
舉報
0/150
提交
取消