Сделать массив php нечувствительным к регистру

если кто-то ищет «TestING», это все равно должно читаться как «testing». У меня есть файл php, включенный в поиск моих веб-страниц, чтобы заблокировать определенные термины. но я должен добавить каждый случай для каждого слова. есть ли быстрое решение, так что случай не имеет значения?

<?

$blocked=array('nude','nsfw','xrated');

?>

person user2405912    schedule 10.07.2013    source источник
comment
Как вы используете $blocked? Есть несколько способов сделать это, но это будет зависеть от того, какие функции вы используете.   -  person andrewsi    schedule 11.07.2013
comment
Массив содержит то, что он содержит - то, что вы должны спросить, как сравнить его с некоторой строкой без учета регистра.   -  person Sam Dufel    schedule 11.07.2013
comment
Всегда обращайтесь к Руководству по PHP.   -  person Markus Hofmann    schedule 11.07.2013


Ответы (3)


Поскольку вы используете strstr, вы можете заменить его на stristr, который является версия без учета регистра

if(stristr($_GET[q],$term)==false)
person aynber    schedule 10.07.2013

Другой способ сделать что-то вместо того, чтобы всегда проверять с помощью strtolower, — вместо in_array использовать эту функцию.

function in_arrayi($needle, $haystack) {
    return in_array(strtolower($needle), array_map('strtolower', $haystack));
}

См. http://us2.php.net/manual/en/function.in-array.php#89256

person Zevi Sternlicht    schedule 10.07.2013

Вы можете сделать все строчными, используя strtolower.

$var1 = "Hello";
$var2 = "hello";
if (strtolower($var1) == strtolower($var2)) {
    echo '$var1 is equal to $var2 in a case-insensitive string comparison';
}

Или вы можете использовать strcasecmp.

$var1 = "Hello";
$var2 = "hello";
if (strcasecmp($var1, $var2) == 0) {
    echo '$var1 is equal to $var2 in a case-insensitive string comparison';
}
person jh314    schedule 10.07.2013
comment
как я могу это сделать - person user2405912; 11.07.2013