За последние 24 часа нас посетили 20974 программиста и 1108 роботов. Сейчас ищут 447 программистов ...

Удалить перенос строки между ковычками

Тема в разделе "PHP для новичков", создана пользователем nekit44, 15 июн 2018.

  1. nekit44

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

    С нами с:
    27 дек 2015
    Сообщения:
    39
    Симпатии:
    2
    Добрый день

    подскажите как составить регулярку чтобы между кавычками удалить(а лучше не удалять а заменить на ', ') переносы строк
    пример:
    Код (Text):
    1. 1 \t "123\r\n321" \r\n
    2. 2 \t "654\r\n" \r\n
    3. 3 \t "987\r\n789" \r\n
    \t - таб
    --- Добавлено ---
    что сделал сам:
    "(.*?)[\r\n](.*?)"

    но такая конструкция выбирает не верно не то что между кавычками, а просто что либо между любыми кавычками
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    PHP:
    1. echo preg_replace('/(?<=")([^"]+)?(\r\n)([^"]+)?(?=")/s', '$1,$3', $str);
    Тут есть маленький минус. Например, для второй строки, получиться результат "654,". Т.е. запятая как бы не в тему. Можно взять второй бубен в руки и сделать так:
    PHP:
    1. echo preg_replace_callback('/("[^"]*")|[^"]*/', function ($m) {
    2.     if(preg_match('/^".+"$/s', $m[0])) {
    3.         return '"' . implode(',',preg_split('/(\r\n)/', trim($m[0],'"'), -1, PREG_SPLIT_NO_EMPTY)) . '"';
    4.     } else {
    5.         return $m[0];
    6.     }
    7. }, $str);
    Тут результат более качественный
     
    nekit44 нравится это.
  3. nekit44

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

    С нами с:
    27 дек 2015
    Сообщения:
    39
    Симпатии:
    2
    Deonis, Дружище спасибо тебе огромное! Все работает как часы