[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: strpos в чём же дело?
Бэндер
<?php
$a = 'абвгдежзийклмноп';

$b = strpos ($a,'о');

echo $b;

?>


Вопрос: почему у меня выводит на букву о значение 28, а не 14 в русском алфавите, но тем не менее 14 в английском?
Перефразированный вопрос: Почему значение в русском алфавите удваиваются?



Спустя 3 минуты, 51 секунда (17.05.2011 - 21:29) vasa_c написал(а):
потому что, видать, на один символ в русском алфавите приходится два байта.

Спустя 5 минут, 42 секунды (17.05.2011 - 21:35) alex12060 написал(а):
UTF-8 ?

Спустя 26 минут, 47 секунд (17.05.2011 - 22:02) Basili4 написал(а):
Бэндер
Пользуй mb_strpos и забудь про strpos и ей подобные. все только через mb_

Спустя 36 минут, 12 секунд (17.05.2011 - 22:38) Guest написал(а):
vasa_c но у одного парня на денвере это работает. В моём же случае получается правильно только если писать так: echo $b/2;

alex12060 первое что делаю: ANSI меняю в блокноте на UTF-8 для новых файлов php. Дальше уже кодирую.

Basili4 mb_strpos работает так же.

Может есть файл в котором как в php.ini или httpd.conf можно сменить настройки?
Apache 2.2.17 и PHP 5.3.5...

Спустя 10 часов, 13 минут, 37 секунд (18.05.2011 - 08:51) linker написал(а):
mb_strpos($str, 'о', 'UTF-8');
тоже 28 выдает?

Спустя 45 минут, 36 секунд (18.05.2011 - 09:37) Guest написал(а):
Цитата (linker @ 18.05.2011 - 05:51)
mb_strpos($str, 'о', 'UTF-8');
тоже 28 выдает?

mb_strpos() expects parameter 3 to be long, string given
и дальше пишет 0 будто не UTF-8 вовсе?

Спустя 28 минут, 22 секунды (18.05.2011 - 10:05) Michael написал(а):
mb_strpos($str, 'о', 0, 'UTF-8');

Спустя 8 минут, 22 секунды (18.05.2011 - 10:14) Guest написал(а):
Цитата (Michael @ 18.05.2011 - 07:05)
mb_strpos($str, 'о', 0, 'UTF-8');

Заработало!) В mb_strpos($str, 'о', 0, 'UTF-8'); $str - это строка букв, о - буква, UTF-8 - мы кодируем строку в UTF-8, а 0 не совсем понятно, допускает значение нуля (которое выводится) или как?

Спустя 7 минут, 8 секунд (18.05.2011 - 10:21) Michael написал(а):
Учись пользоваться хелпом.
http://php.net/manual/ru/function.mb-strpos.php

Спустя 50 минут, 30 секунд (18.05.2011 - 11:11) linker написал(а):
Спасибо, что поправили мну.

Спустя 22 минуты, 29 секунд (18.05.2011 - 11:34) Guest написал(а):
Цитата (Michael @ 18.05.2011 - 07:21)
Учись пользоваться хелпом.
http://php.net/manual/ru/function.mb-strpos.php

The search offset. If it is not specified, 0 is used. If needle is not found, it returns FALSE.
Перефразирую вопрос: если я правильно понял, 0 мы задаём как начало (указываем что первая буква равна 0) или ноль это FALSE (но во втором случае зачем указываем ноль)? Странно что при UTF-8 запрашивает, а без него не нужно..

linker Да, спасибо большое)!

Спустя 8 минут, 36 секунд (18.05.2011 - 11:42) Michael написал(а):
offset - отступ откуда искать. Например ты хочешь поиск сделать с 10-го символа.
Указывать надо потому что тебе надо указать кодировку, а она ожидается 4-ым параметром.

Спустя 7 минут, 26 секунд (18.05.2011 - 11:50) Guest написал(а):
Цитата (Michael @ 18.05.2011 - 08:42)
offset - отступ откуда искать. Например ты хочешь поиск сделать с 10-го символа.
Указывать надо потому что тебе надо указать кодировку, а она ожидается 4-ым параметром.

Спасибо, теперь понял!
Быстрый ответ:

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