| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Поиск подстроки |
| Автор: новичок 2.4.2003, 23:45 |
| Нужно найти подстроку в строке без учера регистра. На локальном компе находит, а на серверах нет. То же самое, но с латинскими буквами, работает нормально, а вот с кирилицей нет... Это особенность php под юниксом такая или что ? $s="СтРоКа"; $s1=strtolower($s); $l="ТР"; $l1=strtolower($l); $pos=strpos($s1,$l1); if ($pos === false) print "Not found"; else print "pos=$pos"; |
| Автор: Devorior 3.4.2003, 00:22 |
| попробуй конвертнуть в KOI8-R : $s = convert_cyr_string($s, "w", "k"); |
| Автор: новичок 3.4.2003, 01:28 | ||
так у меня и так все в KOI-8... Если у меня файл в кодировки кои-8, то все равно надо конвертировать ? |
| Автор: BlackWolf 3.4.2003, 03:42 |
| Не знаю попробовал и на Windows и на Unix - все работает. Взял весь твой пример и просто вставил его в скрипт выдает : pos = 1 |
| Автор: новичок 3.4.2003, 04:15 | ||
а я на двух серверах попробовал - и ни на одном не работает прям мистика какая-то.... |
| Автор: Devorior 3.4.2003, 08:09 |
| да, у меня тоже везде работало =\ |
| Автор: VVP 3.4.2003, 10:08 |
| Слушай, а у теба в последней строке кода 3 равно или опечатка? Надо бы 2 |
| Автор: Foxx 3.4.2003, 10:21 | ||
Это не очепятка |
| Автор: Mark.dll 3.4.2003, 16:04 | ||||
=== проверяет точно ли равно полезно использовать, т.к. при == пустые строки считаются за 0 и наоборот только вот не равно почему-то не пашет... я имею ввиду !=== Хотя в книге именно так и написано. А если по теме: наверное просто дело в php.ini или настройках локалей... хотя я в этом точно не разбираюсь. |
| Автор: Mark.dll 3.4.2003, 16:06 |
| Хотя.... были случаи у меня, когда именно === запарывались. попробуй заменить на == |
| Автор: новичок 3.4.2003, 20:36 | ||
результат работы функции strpos в php4 только так и можно проверить (===). А (==) ничего не даст. Ведь нулевое значение, тоже результат. А в php3 результат работы этой функции проверяется вот так: if (is_string ($pos) && !$pos) // подстрока не найдена А в php4 эта конструкция не работает, по крайней мере у меня. А что касается самой проблемы, то на серверах где я пробовал свой скрипт, функция strtolower() не обрабатывает русские буквы. Почему - не понятно. Я написал свою функцию strtolow() и все заработало, но хотелось бы все таки использовать библиотечную функцию... |
| Автор: Mark.dll 3.4.2003, 22:09 |
| Вырезка из мануала: Note that 'alphabetic' is determined by the current locale. This means that in i.e. the default "C" locale, characters such as umlaut-A (Ä) will not be converted. Тоесть дело в локали... измени её, если это разрешено. |