strpos есть ли ограничения?

evolution

Новичок
strpos есть ли ограничения?

Парсю html страницу.
Хочу определить пишут ли там на кириллице или нет.
Для этого использую strpos()

Как то так:
$is_a = strpos( $strPreviewOutput, $finda);

$strPreviewOutput содержит большое кол-во символов соответвенно.
Нормально работает, если искать нечто латинское. Только начинаю искать кириллицу - начинаются проблемы (а именно $is_a === false).

Где косяк?


P.S. Если $strPreviewOutput содержит небольшое кол-во символов (в комбинации лат и кир), то всё ок.

P.P.S. Ман читал. Поэтому
$finda = "а";
а не
$finda = 'а';
 

evolution

Новичок
MadGreen
Страницы которую парсю?
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


WP
не понял... -(

-~{}~ 27.03.07 23:02:

MadGreen
anonymous at example dot com
02-Feb-2006 06:58
Beware of following the examples too closely...

$str = "abcdef";
echo strpos($str, 'b'); // outputs 1

however

$str = "abc\nef";
echo strpos($str, '\n'); // output nothing (FALSE)

Not a great way to try to stop PHP email injection attacks (as I found out).

Instead use
strpos($str, "\n")

because the escapes are processed only when using double quotes.
 

MadGreen

meninweb
utf-8 использует 2 байта на символ, ты ищешь функцией, которая основана на поиске 1 байт на 1 символ
mb_strpos()
 

MadGreen

meninweb
evolution ну ты сам то видишь что в этих кавычках написано?
и причем тут твоя примитивная "a"? где там перенос строки \n?
 

evolution

Новичок
MadGreen
понял

Спасибо большое!

-~{}~ 27.03.07 23:47:

Не силён в пересборке РНР... надеюсь вновь поможете =)

Сейчас php.ini :
[mbstring]
; language for internal character representation.
mbstring.language = Russian

; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
mbstring.internal_encoding = UTF-8

; http input encoding.
mbstring.http_input = auto

; http output encoding. mb_output_handler must be
; registered as output buffer to function
mbstring.http_output = UTF-8

; enable automatic encoding translation accoding to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
; portable libs/applications.
mbstring.encoding_translation = On

; automatic encoding detection order.
; auto means
mbstring.detect_order = auto

; substitute_character used when character cannot be converted
; one from another
;mbstring.substitute_character = none;


При этом вылетает Warning: mb_strpos() [function.mb-strpos]: Unknown encoding or conversion error. in ...

Не подскажете какие нужно использовать параметры?
 
Сверху