1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

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

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

  1. DmbITpo

    DmbITpo Гость

    Репутация:
    0
    Здравствуйте. Столкнулся с задачей написания регулярки. Но никак не получается корректно выполнить. Всё близко, близко да не то. Может кто поможет. условие такое:
    Надо из строк типа
    {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 Гость

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

    Я бы так делал на скорую руку:
    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.125

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