is_int() strpos() 0-9 curl

ohppc

Новичок
is_int() strpos() 0-9 curl

Проблема решилась применением другого решения, но все-таки...
Страница отдает набор произвольных кодов состояния, состоящих из 8 цифр. Скрипт получает эту страницу с помощью libcurl и сверяет полученный набор со своим набором с помощью перебора двух масивов примерно так
PHP:
foreach ($arr as $v) {

    foreach ($arr2 as $v2) {

        if (is_int(strpos($v, $v2))) {

            $arr3[$v] = 1;
        }
    }
}
Проблема в том, что примерно 1 раз в 7 раз php не видит $v2 в $v, хотя var_dump($arr, $arr2) показывает, что искомая последовательность чисел есть в обоих массивах. При использовании строкового идентификатора проблема вроде как исчезла (количество проверок не было сильно большим).
Кто знает, в чем может быть проблема? Предпологаю, что символы в разных кодировках, а выглядят одинаково благодаря моему браузеру, то есть при дампе он отображает их одинаково. может ли такое быть? Тест проводился на одном и том же сервере/адресе.
 

ohppc

Новичок
Фанат
Ваш вопрос слишком общий :) Пробывал. Только и делаю, что читаю докуметацию.
 

Фанат

oncle terrible
Команда форума
ну вот попробуй прочесть документацию на функцию, которая не работает.
авось, что новое узнаешь
 

ohppc

Новичок
> Если needle не является строкой, он приводится к целому и трактуется как код символа.

в моем случае идентификатор возвращается через strval(), то есть строкой быть обязан

-~{}~ 24.01.07 19:40:

если можно небольшой оффтоп: создавал тему по поводу того, что stripslashes удаляет ненужные слеши. Это проблему решил с помощю форумчан, но все же считаю, что stripslashes ОБЯЗАНА проверять идущий за слешем символ, перед его удалением.
В этой моей новой проблеме мне кажется я тоже ожидаю другого поведения от функции.
 

ohppc

Новичок
oncle terrible
ошибки ну вообще не вижу, ткните меня носом.
проверяю на integer рез-т функции strpos(), чтобы убедиться, что рез-т не false (если строка начинается с искомой подстроки, strpos() вернет 0, то есть если подстрока существует, рез-т будет целым числом).
Какую-нибудь трансформацию типов-результатов не вижу...
 

ohppc

Новичок
насчет отдохнуть сейчас отдохну часик :)
может высказался неправильно.
вот более приближенный к реальности пример:
PHP:
function get_id() {

    //making $result, it will have 8 digits

    return strval($result);
}

$arr = array('abcdef12345678bcdef');

$arr2 = array('12345678');

foreach ($arr as $v) {

    foreach ($arr2 as $v2) {

        if (is_int(strpos($v, $v2))) {

            $arr3[$v] = 1;
        }
    }
}
strpos() здесь вернет 6, это целое число.
 

Фанат

oncle terrible
Команда форума
о господи.
ты ваще не вкуриваешь, что такое типы переменных?
и даже то, что тебе пишет var_dump перед значением - в упор не видишь?
 

ohppc

Новичок
Фанат
мне кажется, Вы не разобрались, какую логику я использую:
PHP:
$arr = array('abcdef12345678bcdef');

$arr2 = array('12345678');

foreach ($arr as $v) {

    foreach ($arr2 as $v2) {

        if (is_int(strpos($v, $v2))) {

            $arr3[$v] = 1;
        }
    }
}
$v === 'abcdef12345678bcdef'. $v2 === '12345678', strpos($v, $v2) === 6, is_int(6) === true
не вижу здесь ошибки

-~{}~ 24.01.07 21:27:

грубо говоря, написанный мною скрипт не всегда находит строку 12345678 в строке abcdef12345678bcdef

-~{}~ 24.01.07 22:00:

Потестил оба варианта: со строкой из цифер скрипт правильно отработал 50 попыток из сотни, со строкой из латинских букв правильно 100 из 100. Либо у меня удивительно кривые руки, либо глюк в работе каких либо функций. Придерживаюсь второго мнения.
 
Сверху