За последние 24 часа нас посетили 17647 программистов и 1283 робота. Сейчас ищут 1329 программистов ...

Все те же регулярные выражения

Тема в разделе "PHP для новичков", создана пользователем Rim, 18 фев 2012.

  1. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    Доброго времени суток всем!
    Регулярные выражения для меня больная тема, толком не могу в них вехать.
    Что надо разобрать: <id:(\d+)>
    Как правильно можна разобрать (и чем лучше), после "id:" также находяться регулярные выражения.
    Спасибо!
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Целое число ищите.
    \w+ - слово
    \d+ - целое число
    [+-]?\d+ - целое со знаком
    [+-]?\d+\.?\d* - число с точкой

    Если я вас правильно понял :)
     
  3. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    Спасибо конечно!
    Но не совсем то...
    Надо получить два значения: id (\w+) и все символы после ":" и перед ">"
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Что у вас за проблема)?
    Вы видимо ищите тег такой в котором участвует после id: числа , ну или то, что надо.
    <id:1>
    <id:2>
    или слово:
    <id:bla>

    Что Вам надо, то?
     
  5. tosanta89

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

    С нами с:
    18 фев 2012
    Сообщения:
    9
    Симпатии:
    0
    \<id:([^\>].+) по идее как раз, захватит до закрывающих скобок
     
  6. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    нет... я не о том... вот есть данные вида: <id:(\d+)> (<любое_слово:регулярная функция>)
    Надо выдрать:
    1 - все что от "<" до ":"
    2 - все что после ":" до ">"

    Вот если я могу выдрать id, то вот с регулярным выражением - не получается

    ЗІ: звиняйте что неверно описал проблемму!
     
  7. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Под ваш конкретный случай можно так

    /<(\w+):([\w\+\\\()]+)>/i

    Собственно непонятно выражение "регулярная функция" т.е. там может быть любой шаблон для регулярного выражения?
     
  8. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
    Да... любой..
     
  9. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
  10. Rim

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

    С нами с:
    28 дек 2010
    Сообщения:
    53
    Симпатии:
    0
  11. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. $p='<id:1>';
    2. echo preg_replace('/<(\w+:\d+)>/i','\\1',$p); 
    \\1 -> id:1

    Код (PHP):
    1. $p='<id:1>';
    2. echo preg_replace('/<(id):(\d+)>/i','\\1 \\2',$p); 
    \\1 -> id
    \\2 -> 1

    Код (PHP):
    1. $p='<id:1>';
    2. echo preg_replace('/<(\w+):(\d+)>/i','\\1 \\2',$p); 
    \\1 -> id
    \\2 -> 1

    Код (PHP):
    1. $p='<id:1>';
    2. echo preg_replace('/<(.+?):(.+?)>/i','\\1 \\2',$p); 
    \\1 -> id
    \\2 -> 1

    Код (PHP):
    1. function p($a,$b)
    2. {
    3.     return  $a.' - '.$b;
    4. }
    5. $p='<id:1>';
    6. echo preg_replace('#<(id):(\d+)>#ies','p(\'\\1\',\'\\2\')',$p); 
    id - 1



    Их еще много, думаю сами поймете :)))