PHP - парсинг строки

Discussion in 'PHP' started by rudi, 20 Sep 2010.

  1. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    487
    Likes Received:
    184
    Reputations:
    5
    как можно считать на php кусок строки
    например дана строка
    $str="hellodear-world";

    мне нужно считать от слова hello до символа -

    чтобы в итоге была строка dear

    но не так, что я указую колл. символов для считывания
    ибо в другой момент может быть дана строка например
    $str="hellomotorolla-world";
     
    #1 rudi, 20 Sep 2010
    Last edited: 20 Sep 2010
  2. M@rkus

    M@rkus Banned

    Joined:
    25 Jul 2010
    Messages:
    43
    Likes Received:
    5
    Reputations:
    0
    PHP:
    preg_match('#hello(.+)-#'$str$str1);
    echo 
    $str[1];
    регулярки решат все ваши проблемы)
    И да форум про регулярки /thread92492.html
     
    #2 M@rkus, 20 Sep 2010
    Last edited: 20 Sep 2010
    1 person likes this.
  3. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    487
    Likes Received:
    184
    Reputations:
    5
    а подскажите, почему
    echo $str[1];
    выводит мне лиш слово Array
    а не полученные данные
     
  4. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Первый вариант правильный, не должно выводить Array. Покажи, как ты используешь эту часть кода в своем скрипте.

    Второй (используя explode) - неправильный, ибо выводит вместе со словом hello.
     
    #4 mailbrush, 20 Sep 2010
    Last edited: 20 Sep 2010
  5. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    487
    Likes Received:
    184
    Reputations:
    5
    спасибо
    вот еще вопрос
    если этот код ищет от hello до -
    PHP:
    preg_match('#hello(.+)-#'$str$str1);
    а как сделать до симола '
    так вроде не канает
    PHP:
    preg_match('#hello(.+)\'#'$str$str1);
     
  6. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Почему "не канает"? Все работает...
     
  7. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    487
    Likes Received:
    184
    Reputations:
    5
    есть строка
    $text="helloworld ' some text ' finish";
    нужно вырезать слово и пробел после него "world "
    $public_key;
    preg_match('#hello(.+)\'#', $text, $public_key);
    получаем результат world ' some text
    тоесть вырезает от hello до последнего символа '
    а нужно до первого символа '
     
  8. SmsMachine

    SmsMachine New Member

    Joined:
    2 Jul 2010
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Нужно использовать нежадный квантификатор, а именно
    ...
    preg_match('#hello(.+?)\'#', $text, $public_key);
    ...
     
    1 person likes this.
  9. Gregorieva

    Gregorieva Banned

    Joined:
    17 Sep 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Пасиб пригодится