За последние 24 часа нас посетили 22586 программистов и 1012 роботов. Сейчас ищут 726 программистов ...

Поиск регулярного выражения

Тема в разделе "PHP для новичков", создана пользователем Sasha55555, 11 май 2019.

  1. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    1. Подскажите регулярное выражение, чтобы выбрать отсюда
    Код (Text):
    1. m[1] = {text:"Тестовое сообщение" + "\"" + "."};
    Тестовое сообщение" + "\"" + ".

    2. Как с помощью функции preg_replace_callback, использовать два регулярных выражения
    Код (Text):
    1. '/m\[([^"]+)]\s=\s\{text:"([^"]+)"};/';
    2. '/m\[([^"]+)]\s=\s\{number:([^"]+), text:"([^"]+)"};/';
    для
    Код (Text):
    1. m[1] = {text:"klass"};
    2. m[2] = {number:1, text:"klass"};';
    чтобы в итоге получить два XML
    Код (Text):
    1. <i text="klass" />
    2. <i number="1" text="klass" />
     
  2. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
  3. Vanchot

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

    С нами с:
    23 мар 2019
    Сообщения:
    104
    Симпатии:
    19
    Адрес:
    Ахерон (LV-426)
    фигнёй занимаетесь
     
  4. Vanchot

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

    С нами с:
    23 мар 2019
    Сообщения:
    104
    Симпатии:
    19
    Адрес:
    Ахерон (LV-426)
  5. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Sasha55555 нравится это.
  6. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    А как по строке сгенерировать регулярное выражение?
     
  7. Vanchot

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

    С нами с:
    23 мар 2019
    Сообщения:
    104
    Симпатии:
    19
    Адрес:
    Ахерон (LV-426)
    Это исходный код, который будет выполняться, или простой файл с такими строчками?
     
  8. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    m[1] = {text:"Тестовое сообщение" + "\"" + "."};
    преобразовать в
    <i Id="1" text="Тестовое сообщение" + "\"" + "." />
     
  9. Vanchot

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

    С нами с:
    23 мар 2019
    Сообщения:
    104
    Симпатии:
    19
    Адрес:
    Ахерон (LV-426)
    PHP:
    1. $str = 'm[1] = {text:"Тестовое сообщение" + "\"" + "."};';
    2. $preg = '/^m\[(\d)+\]\s*=\s*{\s*text\s*:\s*"([^"]+)"\s*\+\s*"\\\""\s*\+\s*"\."\s*};/m';
    3. $to = '<i Id="\1" text="\2" + "\"" + "." />';
    4.  
    5. echo '<textarea cols="60" rows="2">';
    6. echo $str, "\n";
    7. echo preg_replace($preg, $to, $str);
    8. echo '</textarea>';
     
    #9 Vanchot, 13 май 2019
    Последнее редактирование: 13 май 2019
  10. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    А тут вот место text: ([^"]+) как разрешить все символы? Тут как я понимаю запрещает кавычки
     
  11. Vanchot

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

    С нами с:
    23 мар 2019
    Сообщения:
    104
    Симпатии:
    19
    Адрес:
    Ахерон (LV-426)
    Просто поиск идет до первых встреченных кавычек, так безопаснее. Тут сработает и более жадное (.*) вместо "([^"]+)", но не советую.
    Там ещё модификатор m лишний. Поставил в начале ^, а его забыл убрать.
     
    Sasha55555 нравится это.