[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема поиска в строке
Strannik
Здравствуйте - возникла проблема по поиску в строке:
есть строка значений:
$existing_names=array('ИМЯ1','NAME','ИМЯ','ИМЯ2');     

$postname=$_POST['postname'];
преобразуем значение полученное с другой страницы методом post в верхний регистр (значение - какое - нибудь русское имя, например ИМЯ)
$strname="mb_strtoupper($postname, 'UTF-8')";


И далее делаем проверку на существование слова в нашей строке значений $existing_names:


if (in_array($strname, $existing_names))
{
//недоступено
echo "no";
}
else
{
//доступено
echo "yes";
}
}

код отлично работает с английскими буквами
Но если я использую русские слова, появляется проблема проблема: результат - всегда yes, если я пишу
if (in_array("ИМЯ", $existing_domains)), тогда результат no -

Подскажите в чем ошибка, почему если написать if (in_array($strname, $existing_names)) проверка не работает, а если if (in_array("ИМЯ", $existing_names)), тогда работает ?
И как правильно написать, чтобы первоначальный вариант работал с русскими буквами??



Спустя 13 минут, 11 секунд (2.12.2010 - 15:16) redasar написал(а):
есть конечно вариант? но это костыль по моему, зато будет работать посли приема параметов переводить их в транслит если параметр это строка с русскими символами. можно конечно яваскритом это делать перед отправкой если можно передавать параметры методом GET. если вопрос сстоит в том будет ли видно их в адресной строке браузера тогда можно их опять же отдавать метедом GET отлько в асинхронном режиме с помощью аякса

Спустя 4 часа, 18 минут, 20 секунд (2.12.2010 - 19:34) Strannik написал(а):
а нет другого решения проблемы?

Спустя 3 часа, 8 минут, 44 секунды (2.12.2010 - 22:43) kirik написал(а):
Цитата (redasar @ 2.12.2010 - 07:16)
Подскажите в чем ошибка

А ты пробовал выводить эту переменную $strname? И Кстати ты случайно или нет написал в кавычках mb_strtoupper?
$strname="mb_strtoupper($postname, 'UTF-8')";

Спустя 17 минут, 6 секунд (2.12.2010 - 23:00) Strannik написал(а):
пробовал - echo $strname выводит правильный результат

по поводу кавычек - как выяснилось в ходе нескольких экспериментов наличие двойных кавычек или их отсутствие в данном коде роли не играет.

Спустя 26 минут, 8 секунд (2.12.2010 - 23:26) kirik написал(а):
Цитата (Strannik @ 2.12.2010 - 15:00)
по поводу кавычек - как выяснилось в ходе нескольких экспериментов наличие двойных кавычек или их отсутствие в данном коде роли не играет.

ээм.. не может быть. если строка в кавычках - это строка, и выполняться код внутри кавычек не будет.

Цитата (Strannik @ 2.12.2010 - 15:00)
echo $strname выводит правильный результат

А выведи так
echo $strname . '-' . $existing_names[0] . ': '. ($strname == $existing_names[0]);
где $strname и $existing_names[0] заведомо равны.

Спустя 16 часов, 12 минут, 37 секунд (3.12.2010 - 15:39) Strannik написал(а):
смысл? - это не есть решение если они заведомо равны - мне нужен поиск из множества значений.

P/S/: кстати вчера перетрудился, когда сказал, что кавычки роли не играют, но все равно без ни од не ищет русские слова...

Спустя 35 минут, 47 секунд (3.12.2010 - 16:14) twin написал(а):
Ты чего то недоговариваешь. Все это работает у меня.

Спустя 1 день, 40 минут, 22 секунды (4.12.2010 - 16:55) Strannik написал(а):
twin
работает поиск русских слов? в каком решении?

Спустя 2 часа, 10 минут, 14 секунд (4.12.2010 - 19:05) T1grOK написал(а):
Зачем функцию в кавычки взял??? Она будет воспринята как строковый литерал, а не как функция. Вот так все прекрасно работает:

$existing_names=array('ИМЯ1','NAME','ИМЯ','ИМЯ2');
$strname=mb_strtoupper($postname, 'UTF-8');

if (in_array($strname, $existing_names)){
echo "Есть совпадение";
}else{
echo "Совпадений нет";
}

Спустя 3 часа, 1 минута, 50 секунд (4.12.2010 - 22:07) kirik написал(а):
Цитата (Strannik @ 3.12.2010 - 07:39)
смысл? - это не есть решение если они заведомо равны - мне нужен поиск из множества значений.

Смысл в том, чтобы предоставить хотя бы немного данных о том, что творится у тебя.
Гм.. кстати случаем не денвер у тебя? rolleyes.gif

Спустя 2 часа, 55 минут, 35 секунд (5.12.2010 - 01:03) Strannik написал(а):
нет

а то, что с кавычками намудрил, я уже раньше говорил...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.