Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Странный strpos
Форумы портала PHP.SU » PHP » Программирование на PHP » Странный strpos

Страниц (1): [1]
 

1. Viper - 15 Декабря, 2009 - 15:18:55 - перейти к сообщению
есть строка $string = 'фывь фывщ';
и код для проверки что есть в ней пробел
PHP:
скопировать код в буфер обмена
  1.  
  2. if (strpos($string, ' ') === false) {
  3.         echo 'yes';
  4. } else {
  5.         echo 'nor';
  6. }


срабатывает, грит что 'yes'

если строка вида $string = 'фывьфывщ';
все равно говорит что 'yes'
2. Мелкий - 15 Декабря, 2009 - 15:26:32 - перейти к сообщению
У меня работает данный код.
Вот только обратите внимание: такой проверкой вы узнаёте, что пробела нет. false возвращается, когда символ не найден.
3. Hunter - 15 Декабря, 2009 - 15:54:15 - перейти к сообщению
у меня тоже этот код работает
(Добавление)
вот почему он грит yes:
скрипт в данной строке $string = 'фывь фывщ' как и в строке $string = 'фывьфывщ' не может найти подстроку ' ' (пробел) наверное потому что подстроку ' ' (пробел) нужно передавать функции в качестве второго параметра не "буквально" пробелом (' ') а с омощью спецсимволов. видимо этот момент может зависеть от настроек интерпретатора, хотя я могу ошибаться))))
4. Ch_chov - 15 Декабря, 2009 - 17:44:02 - перейти к сообщению
Цитата:
нужно передавать функции в качестве второго параметра не "буквально" пробелом (' ' а с омощью спецсимволов

Можно буквально.

В strpos был баг при работе с русскими символами. Непомню в какой версии, 5.2.6 вроде. Попробуй проверить строку с латинскими символами или обнови версию php.
5. EuGen - 18 Декабря, 2009 - 10:43:56 - перейти к сообщению
Локаль устанавливали?
6. Viper - 18 Декабря, 2009 - 12:06:58 - перейти к сообщению
да. локаль RU для винды
7. EuGen - 18 Декабря, 2009 - 12:25:30 - перейти к сообщению
Вам нужно именно что-то вроде cp1251? Может, уместно попробовать multibyte?
preg_match("/\s/", $string);
тоже как вариант.
8. Viper - 18 Декабря, 2009 - 12:52:42 - перейти к сообщению
да. именно для cp1251
9. JustUserR - 18 Декабря, 2009 - 15:21:12 - перейти к сообщению
Viper А сам PHP-скрипт слуаем не в юникоде сохранен? Тогда наверное mb-функции нужны и локаль соответствющая
10. Viper - 21 Декабря, 2009 - 07:52:23 - перейти к сообщению
JustUserR пишет:
А сам PHP-скрипт слуаем не в юникоде сохранен? Тогда наверное mb-функции нужны и локаль соответствющая

да вот в том то и дело, что все файлы в ANSI win

 

Powered by ExBB FM 1.0 RC1