За последние 24 часа нас посетили 18117 программистов и 1590 роботов. Сейчас ищут 1262 программиста ...

Помогите с регуляркой - извлечь текст между ;

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

  1. -=SVEt=-

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

    С нами с:
    21 мар 2013
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте, пожалуйста, помогите с регулярным выражением для preg_match. Нужно вырезать весь текст между ; ....саму ; не нужно в переменную....текст примерно такой:

    ;то, что нужно выдрать;;;
    ;;;нужный текст ||||
    | текст ;;;
    ;;;;;;;;текст;;

    Замучался составлять регулярное выражение....помогите, плиз...

    Добавлено спустя 39 минут 17 секунд:
    все вроде бы просто ;(.*); , но он ругается на синтаксическую ошибку Parse error: syntax error, unexpected ';' in Z:\home\portal.ru\www\parser.php on line 7
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    ну покажите код

    Добавлено спустя 2 минуты 34 секунды:
    /;([^;]+);/
     
  3. -=SVEt=-

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

    С нами с:
    21 мар 2013
    Сообщения:
    4
    Симпатии:
    0
    while (preg_match_all ([;|;;](.*)[;|;;|;;;]),$string,$matches) !== FALSE)
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    а в кавычки кто брать будет? регулярное выражение это же строка
    Код (PHP):
    1. while ( preg_match_all('/;([^;]+);/',$string,$matches) )
     
  5. -=SVEt=-

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

    С нами с:
    21 мар 2013
    Сообщения:
    4
    Симпатии:
    0
    ой, спасибо большое!!! Сколько времени потерял на изменение разных выражений, а все оказалось предельно просто. Массив matches двухмерный? не напомните как тут определяется многомерность массива? по-моему по числу выражений (выражений взятых в скобки) в preg_macth и многомерность массива, так?

    +еще, получается что текст вырезается с ; в начале, иногда в конце текста...а как исправить шаблон так, чтобы ; не входила в элемент массива...можно конечно вырезать стринг реплейс и тд...но хотелось бы по человечески, через правильный шаблон. спасибо.
     
  6. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Что то не могу осилить так для интереса можешь иначе сформировать вопрос:)

    Добавлено спустя 24 секунды:
    Вообще должен быть многомерный массив все зависит от результата поиска так сказать.
    http://php.ru/manual/function.count.html тебе в помощь
     
  7. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Код (Text):
    1. /(?<=;)([^;]+)(?=;)/
    либо можно просто очистить от ; так:
    $s = trim($s,';');
     
  8. -=SVEt=-

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

    С нами с:
    21 мар 2013
    Сообщения:
    4
    Симпатии:
    0
    ок....всем большое спасибо, массив оказался двумерным, который я вычистил до блеска функцией trim :) задача решена!