За последние 24 часа нас посетили 17583 программиста и 1611 роботов. Сейчас ищут 923 программиста ...

Проблема в регулярке или в чём ещё?

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

  1. co11ter

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

    С нами с:
    3 авг 2011
    Сообщения:
    16
    Симпатии:
    0
    Имеется строка
    Код (Text):
    1. $response={"response":[1,{"id":40,"from_id":-33539970,"to_id":-33539970,"date":1327408141,"text":"а аЕаГб�аЛб�б�аНб�аЕ аВб�б�аАаЖаЕаНаИб� | аЄб�аНаКб�аИаИ аДаЛб� б�аАаБаОб�б� б� б�аЕаГб�аЛб�б�аНб�аМаИ аВб�б�аАаЖаЕаНаИб�аМаИ","media":{"type":"share","share_url":"http:\/\/www.softtime.ru\/bookphp\/gl7_11.php","share_title":"а аЕаГб�аЛб�б�аНб�аЕ аВб�б�аАаЖаЕаНаИб� | аЄб�аНаКб�аИаИ аДаЛб� б�аАаБаОб�б� б� б�аЕаГб�аЛб�б�аНб�аМаИ аВб�б�аАаЖаЕаНаИб�аМаИ"}]}
    Необходимо получить значение параметра text. Пишу
    Код (Text):
    1. preg_match_all('/"text":"(\w+)"/', $response, $f);
    2. echo "$f[1]";
    Выводит
    Код (Text):
    1. Array
    Я не правильно составляю выражение или дело в кириллице?
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    print_r($f);
     
  3. co11ter

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

    С нами с:
    3 авг 2011
    Сообщения:
    16
    Симпатии:
    0
    Код (Text):
    1. Array ( [0] => Array ( ) [1] => Array ( ) )
    В том и дело, что сами значения элементов массива получить не могу
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    И чо непонятного? :)
     
  5. co11ter

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

    С нами с:
    3 авг 2011
    Сообщения:
    16
    Симпатии:
    0
    хотелось бы что-бы в моём случае возвращалось
    Код (Text):
    1. а аЕаГб�аЛб�б�аНб�аЕ аВб�б�аАаЖаЕаНаИб� | аЄб�аНаКб�аИаИ аДаЛб� б�аАаБаОб�б� б� б�аЕаГб�аЛб�б�аНб�аМаИ аВб�б�аАаЖаЕаНаИб�аМаИ
     
  6. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    вместо preg_match_all использовать preg_match, а \w заменить на точку.
     
  7. co11ter

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

    С нами с:
    3 авг 2011
    Сообщения:
    16
    Симпатии:
    0
    теперь так
    Код (Text):
    1. preg_match('/"text":"(.+)"/', $response, $f);
    2. print_r($f[1]);
    Уже лучше, спс))
    Только $f[1] содержит всю строку от "text":" до самых последних кавычек, а хотелось бы до первых, т е выводиться
    Код (Text):
    1. а аЕаГб�аЛб�б�аНб�аЕ аВб�б�аАаЖаЕаНаИб� | аЄб�аНаКб�аИаИ аДаЛб� б�аАаБаОб�б� б� б�аЕаГб�аЛб�б�аНб�аМаИ аВб�б�аАаЖаЕаНаИб�аМаИ","media":{"type":"share","share_url":"http:\/\/www.softtime.ru\/bookphp\/gl7_11.php","share_title":"а аЕаГб�аЛб�б�аНб�аЕ аВб�б�аАаЖаЕаНаИб� | аЄб�аНаКб�аИаИ аДаЛб� б�аАаБаОб�б� б� б�аЕаГб�аЛб�б�аНб�аМаИ аВб�б�аАаЖаЕаНаИб�аМаИ
    А надо
    Код (Text):
    1. а аЕаГб�аЛб�б�аНб�аЕ аВб�б�аАаЖаЕаНаИб� | аЄб�аНаКб�аИаИ аДаЛб� б�аАаБаОб�б� б� б�аЕаГб�аЛб�б�аНб�аМаИ аВб�б�аАаЖаЕаНаИб�аМаИ
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    тогда .+?
     
  9. yuri

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

    С нами с:
    16 янв 2012
    Сообщения:
    288
    Симпатии:
    2
  10. co11ter

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

    С нами с:
    3 авг 2011
    Сообщения:
    16
    Симпатии:
    0
    Да, вещь нужная. Потренируюсь.
    То что надо! А что если в строке встречается несколько "text":"? При использовании preg_match я получу только результат первого вхождения? А если мне нужно все? Я всё-таки думал с этой целью использовать preg_match_all и записывать результаты в массив... Только что-то не получается((
     
  11. co11ter

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

    С нами с:
    3 авг 2011
    Сообщения:
    16
    Симпатии:
    0
    Всё, вопрос снят. Спасибо за помощь!