За последние 24 часа нас посетили 14998 программистов и 1765 роботов. Сейчас ищут 1449 программистов ...

Строка в массив и обратно.

Тема в разделе "Регулярные выражения", создана пользователем lawr, 21 ноя 2015.

  1. lawr

    lawr Активный пользователь

    С нами с:
    24 июл 2009
    Сообщения:
    24
    Симпатии:
    0
    Доброго времени суток всем.
    Есть строка неизвестной длины. Есть два ключевых слова в строке. Они известны.Нужно распознать содержимое между двух ключей. По ним обрезаю строку до необходимого размера. Обрезаю засунув строку в масив и удаляю ненужные зачения из массива. Потом собираю из массива нужную строку.
    Код (PHP):
    1. <?
    2. $a = "qwerty123456"; // данная строка
    3. $findme   = '23'; // искомая подстрока
    4. $pos1 = strpos($a, $findme);// Позиция искомой подстроки в данной строке
    5. echo $pos1;
    6. echo ("<br>");
    7. $pos2 = strlen($findme);//длинна искомой подстроки
    8. echo $pos2;
    9. echo ("<br>");
    10. $arr1 = str_split($a);//Перевод строки в массив
    11. print_r($arr1);
    12. // Вырезаем лишнее до ключегого слова
    13. $x=-1;
    14. while ($x !== 2) 
    15. {
    16. $x++;
    17. unset ($arr1[$x]);
    18. }
    19. echo ("<BR>");
    20. print_r($arr1);
    21. echo ("<br>");
    22. $cut_results = implode("", $arr1);
    23. echo ("$cut_results.<br>");
    24. $b = ( $arr1[3]);
    25. $c = ($arr1[8].$arr1[9]);
    26. echo $b;
    27. echo ("<BR>");
    28. Echo $c;
    29. echo ("<BR>");
    30. echo gettype($a);
    31. echo "<br>";
    32. echo gettype($b);
    33. echo "<br>";
    34. echo gettype($c);
    35. echo "<br>";
    36. ?>
    Я понимаю что я работаю со строковыми функциями , но почему $c типа string? Как привести ее к int?Была мысль прибавить 0 и тогда тип меняется на int. Но там может быть и буква и цифра. Мне надо каждый раз знать тип переменной. Т.к. от этого зависят дальнейшие действия.

    Как узнать тип переменной?

    Да это типа парсер страницы.
    Нет , нельзя прочитать весь html через curl. Там https и весь исходный код страницы это 8-9 ява-скриптов.



    Очень сильно извиняюсь. Ошибся веткой. Перенесите куда положенно.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  3. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    входящие данные всегда имеют тип строки. подстрока от строки тоже имеет тип строки. чтоб превратить строку в любой другой - числовой, булев или что-то еще - тип, можно использовать соответствующие функции и конструкции каста. например кастовать строку в число можно через (int):
    Код (PHP):
    1. $sval = '102';
    2. $ival = (int) $sval; // или
    3. $ival = intval($sval);
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    $i = (int)$c;
     
  5. lawr

    lawr Активный пользователь

    С нами с:
    24 июл 2009
    Сообщения:
    24
    Симпатии:
    0
    я пробовал gettype. тогда и буква становится int. А я не знаю что придет? Если бы знал , что придет. Возмжно я не совсем ясно выразился.
    Из строки "qwerty123456" найти соседние знаки от "34" спава и слево по 1 шт. И в зависисмости от того что за знак , буква или цифра продолжение скрипта отличается.
    Я вот думаю , а если через регулярку?
    Прогоняем сначала
    Код (PHP):
    1. /[^a-zA--Яа-я\s]/
    , а потом
    Код (PHP):
    1. /[^0-9]/
    и смотреть кто вернет True или False

    Добавлено спустя 42 минуты 56 секунд:
    Так и сделал прогнал по одному знаку через обе регулярки. И посмотрев кто вернул NULL увидел ,что идет до и после ключа.