我想让preg_match的重音不敏感,但它不起作用。
$haystack = 'été';
$needle = 'ete';
if (preg_match('#'.$needle.'#ui', $haystack, $matches)) {
echo $haystack.' matches.';
var_dump($matches);
}
你知道吗?
修饰符u
允许用多字节字符处理字符串。但是它不允许音译重音。您可以使用iconv()
来处理这种情况。
$haystack = 'nous sommes en été.';
$needle = 'ete';
$haystack = iconv('UTF-8', 'ASCII//TRANSLIT', $haystack);
if (preg_match('#' . $needle . '#ui', $haystack, $matches)) {
var_dump($matches);
}
输出:
array(1) {
[0] =>
string(3) "ete"
}