检查字符串是否包含PHP中数组中的值
我使用的是PHP7.1.12,我试图检查数组中的值是否存在于字符串中,以便执行以下操作:检查字符串是否包含PHP中数组中的值,php,Php,我使用的是PHP7.1.12,我试图检查数组中的值是否存在于字符串中,以便执行以下操作: public function checkWords($word) { $list = array('extinção','desativação','obrigatório'); foreach($list as $l) { if (stripos($word, $l) !== false) { return true; }
public function checkWords($word) {
$list = array('extinção','desativação','obrigatório');
foreach($list as $l) {
if (stripos($word, $l) !== false) {
return true;
}
}
return false;
}
我把它们叫做函数
echo($this->checkWords('Físicaem desativação/extinção voluntária:23000.010237/2012-46''); //returns false
现在是奇怪的部分,如果我转到函数并用let's say'hello'替换$l
public function checkWords($word) {
$list = array('extinção','desativação','obrigatório');
foreach($list as $l) {
if (stripos($word, 'extinção') !== false) {
return true;
}
}
}
函数调用将返回true
echo($this->checkWords('Físicaem desativação/extinção voluntária:23000.010237/2012-46''); //returns true
有什么想法吗?因为这个问题有悬赏,所以不能将其标记为重复,但问题在于您案例中使用的函数:
stripos($word, 'extinção')
如上所述,stripos不能很好地处理特殊字符,并产生这种不确定的结果。请改用。由于此问题有悬赏,因此不能将其标记为重复,但问题在于您案例中使用的函数:
stripos($word, 'extinção')
如上所述,stripos不能很好地处理特殊字符,并产生这种不确定的结果。请改用。这似乎是字符串编码的问题 1) 检查使用
mb_stripos
是否有效
2) 如果(1)失败,您可能使用错误的编码提供文件。检查文件字符集是否与html字符集元头匹配
这似乎是字符串编码的问题 1) 检查使用
mb_stripos
是否有效
2) 如果(1)失败,您可能使用错误的编码提供文件。检查文件字符集是否与html字符集元头匹配
当您当时必须处理多字节字符时,简单的字符串函数将无法工作。您必须为它使用mb函数。有一个使用多字节字符的mb函数列表,请在此处检查整个列表: 现在,对于查找位置,您可以使用
mb_stripos
函数。请尝试以下代码:
function checkWords($word) {
$list = array('extinção','desativação','obrigatório');
foreach($list as $l) {
if (mb_stripos($word, $l) !== false) {
return true;
}
}
return false;
}
var_dump(checkWords('Físicaem desativação/extinção voluntária:23000.010237/2012-46')); // return true
echo PHP_EOL;
var_dump(checkWords('Físicaema dessativação/extsinção voluntária:23000.010237/2012-46')); //return false
当您当时必须处理多字节字符时,简单的字符串函数将无法工作。您必须为它使用mb函数。有一个使用多字节字符的mb函数列表,请在此处检查整个列表: 现在,对于查找位置,您可以使用
mb_stripos
函数。请尝试以下代码:
function checkWords($word) {
$list = array('extinção','desativação','obrigatório');
foreach($list as $l) {
if (mb_stripos($word, $l) !== false) {
return true;
}
}
return false;
}
var_dump(checkWords('Físicaem desativação/extinção voluntária:23000.010237/2012-46')); // return true
echo PHP_EOL;
var_dump(checkWords('Físicaema dessativação/extsinção voluntária:23000.010237/2012-46')); //return false
无法复制返回false的第一个示例:我认为这可能是一个字符集问题,将使用真实数据更新问题。不管怎么说,这是一个具有真实数据的函数:看起来确实如此:关于如何解决这个问题,有什么想法吗?我试图用utf8_encode()对它们进行编码,但都不起作用。@André在PHP7.1.7中执行求值时返回true。无法复制第一个示例返回false:我认为这可能是一个字符集问题,将用真实数据更新问题。不管怎么说,这是一个具有真实数据的函数:看起来确实如此:关于如何解决这个问题,有什么想法吗?我试着用utf8_encode()对它们进行编码,但都不起作用。@André在PHP7.1.7中执行您的求值返回true。