Хитрая Регулярка

Тема в разделе "PHP программирование", создана пользователем DmbITpo, 23 янв 2012.

  1. DmbITpo

    DmbITpo Гость

    Здравствуйте. Столкнулся с задачей написания регулярки. Но никак не получается корректно выполнить. Всё близко, близко да не то. Может кто поможет. условие такое:
    Надо из строк типа
    {g text="hello words" prefix="title"}
    {g text="hello "new" words" prefix="title"}
    {g text="hello mine's "new"words" prefix="title"}
    {g text="hello my words"}
    {g text="hello my "words""}

    вытащить всё, что находится между text="..." (т.е. получить ...).
    Но учесть, что внутри кавычек могут быть другие кавычки...

    Может есть какие варианты?

    заранее спасибо!
     
  2. typak

    typak Гость

    Регулярку не знаю как написать (мб както с опережающей проверкой)
    проще с использованием дополнительных функций пхп или можно было два раза пройти регулярным выражением, чтоб область поиска сузить.

    Я бы так делал на скорую руку:
    Код (PHP):
    <?php
    $text='{g text="hello words" prefix="title"}
    {g text="hello "new" words" prefix="title"}
    {g text="hello mine\'s "new"words" prefix="title"}
    {g text="hello my words"}
    {g text="hello my "words""}'
    ;
    $pattern="#g text=\"([^=}]*)#i";
    $poisk=preg_match_all($pattern,$text,$matches);
    foreach ($matches[1] as $val)
    {
    echo substr($val,0,strrpos($val,"\""))."<br>";
    }
    ?>
    Получаем то шо надо:

    hello words
    hello "new" words
    hello mine's "new"words
    hello my words
    hello my "words"
     
Загрузка...
Похожие Темы - Хитрая Регулярка
  1. dmalsh
    Ответов:
    1
    Просмотров:
    1.005

Поделиться этой страницей