сравнение без учета регистра в PHP

Есть ли в PHP оператор, позволяющий проводить сравнения с учетом регистра?

Вместо того, чтобы делать следующее:

if (strtolower("A") == strtolower("a") )

Думаю, я ищу что-то вроде:

if ^("A" == "a")   

Где ^ указывает php игнорировать сравнение на основе регистра.

Да, у меня действительно буйная фантазия. :)


person Average Joe    schedule 04.04.2012    source источник
comment
возможный дубликат stackoverflow .com/questions/3506706/   -  person ghoti    schedule 04.04.2012


Ответы (4)


Вы можете использовать stricmp

if(!strcasecmp('a', 'A')) echo 'strings are equal';
person knittl    schedule 04.04.2012
comment
зачем тебе! там? - person Average Joe; 04.04.2012
comment
@AverageJoe: потому что strcasecmp возвращает 0, если обе строки равны (игнорируя регистр). В противном случае он возвращает либо +1, либо -1, в зависимости от того, какая строка меньше (если вы их сортировали) — проверьте документы - person knittl; 04.04.2012
comment
так что это лучше, чем печатать ==0. экономит при наборе текста. я не могу сказать о читабельности, это лучшая вещь, но, конечно, это экономит ввод текста. с другой стороны, ==0 тоже плохо читается. это пхп! с этим всегда трудно иметь дело. спасибо, вязал. - person Average Joe; 04.04.2012
comment
Оператор not (!) и == 0 почти эквивалентны. В этом случае все сводится к личным предпочтениям или политике проекта. - person knittl; 04.04.2012

Для этого можно использовать strcasecmp. Просто убедитесь, что он возвращает 0.

if (strcasecmp("A", "a") == 0) {
    // yes
}
person Daniel Lubarov    schedule 04.04.2012

Вы можете использовать http://www.php.net/manual/en/function.strcasecmp.php strcasecmp

if (strcasecmp("A", "a") == 0) {
    echo 'OK';
}

Спасибо

:)

person Baba    schedule 04.04.2012

strcasecmp

person Explosion Pills    schedule 04.04.2012