За последние 24 часа нас посетили 22103 программиста и 1869 роботов. Сейчас ищут 908 программистов ...

Разбить строку на подстроки

Тема в разделе "PHP для новичков", создана пользователем free-bits, 14 ноя 2008.

  1. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    У меня есть строк, например:

    "предоставить потребительский кредит в сумме 12000 рублей"

    Мне нужно получить в массив значения между выделенными словами, если эти слова (выделенные) заранее известны.
    При этом нужно чтобы лишние пробелы в начале и конце полученных строк удалялись, а массив имел определенные индексы индесы. Т.е. на выходе я дожен получить следующий массив:

    PHP:
    1.  
    2. $buf['credit']  // название кредита
    3. $buf['sum'] // сумма кредита
    4.  
    Может есть функция какая?=)
     
  2. Frozen

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

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    preg_match()

    удачи...
     
  3. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Frozen спасибо за совет, но я не могу разобраться с маской! =)
    Во всех примерах, которые я нашел по регулярным выражениям, используется извличение подстрок за счет разделяющих символв а у меня в исходной строке их нет.
    Использование масок как-то слишком замудрено=)
    Пожалуйста, подскажите как задать маску=)
     
  4. Frozen

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

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    ну почему, у тя есть разделяющие символы - пробелы!

    может попробовать strpos, str_replace...
     
  5. Adamant

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

    С нами с:
    8 апр 2007
    Сообщения:
    234
    Симпатии:
    0
    Адрес:
    Казахстан г.Тараз
    PHP:
    1.  
    2. <?php
    3. $str = 'У меня есть строк, например:
    4.  
    5. "предоставить потребительский кредит в сумме 12000 рублей"
    6.  
    7. Мне нужно получить в массив значения между выделенными словами, если эти слова (выделенные) заранее известны.
    8. При этом нужно чтобы лишние пробелы в начале и конце полученных строк удалялись, а массив имел определенные индексы индесы. Т.е. на выходе я дожен получить следующий массив:';
    9.  
    10. $pattern = '/предоставить (.+) кредит в сумме (\d+) рублей/iU';
    11.  
    12. if (preg_match($pattern, $str, $arr)) {
    13.     echo '<pre>';
    14.     print_r($arr);
    15.     echo '<pre>';
    16.  
    17.     $buf['credit'] = trim($arr[1]);  // название кредита
    18.     $buf['sum']  = $arr[2];// сумма кредита
    19. }
    20. ?>
    21.  
     
  6. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Adamant спасибо большое! работает=)
     
  7. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Всем привет. У меня возник еще один вопрос по этой теме))
    Есть строка
    PHP:
    1.  
    2. <?php
    3. $str= "values (11, 'str1', 5), values(12, 'str2', 1),  //\n
    4. values(15, 'str3', 7)"
    5.  
    Подскажите пожалуйста, как с помощью регулярных выражении получить такой массив:
    Снова не получается задать правильную маску((. Пытался так
    PHP:
    1.  
    2. <?php
    3. $pattern = "/values(\S*)\((.+)\)(\,*)/iU";
    4.  
    Но получается срока от первой скобки до последней, а мне надо до второй. И с переводом катертки при задании сроки косяк=(.
     
  8. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Код (Text):
    1. /values\s*\((.*?)\)/s
     
  9. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Sergey89, спасибо работает) А как теперь ее дополнить чтобы оставшиеся
    группы значении так же извлекались, если можно то в тот же массив?
     
  10. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    preg_match_all
     
  11. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Sergey89, точно, спасибо) с регулярными выражениями я еще на Вы)) Надо будет их более глубже изучить)