REGEX начинается с двух метасимволов - PullRequest
0 голосов
/ 07 декабря 2018

У меня одна проблема с моим REGEX.Я хотел бы найти сегменты моей строки, которые начинаются с "и должен содержать один или несколько разрывов строки.

$csv = xxxx,xxxx,"segment with

line break",xxxx,"segment with no line break",xxxx;

Это мой РЕЙКС:

$file = fopen('google.csv', 'r');

$csv = file_get_contents('google.csv');


function matches($matches)
{
    return preg_replace("#\n|\r|\t#", "£", $matches);

}

preg_replace_callback('/,"(?=[^"]*\R)[^"]*"/', 'matches', $csv);

Когда я удаляюпервый метасимвол ',' он работает, но у меня есть некоторые проблемы с остальной частью строки. И когда я добавляю запятую, мой REGEX не работает.

Можете ли вы помочь мне, пожалуйста?

1 Ответ

0 голосов
/ 07 декабря 2018

Третьим аргументом preg_replace должна быть строка:

preg_replace("#\n|\r|\t#", "£", $matches[0]);
//                                      ^^^

Весь код:

$csv = 'xxxx,xxxx,"segment with

line break",xxxx,"segment with no line break",xxxx';

function matches($matches) {
    return preg_replace("#\n|\r|\t#", "£", $matches[0]);
}

$res = preg_replace_callback('/,"(?=[^"]*\R)[^"]*"/', 'matches', $csv);
echo $res;

Вывод:

xxxx,xxxx,"segment with££line break",xxxx,"segment with no line break",xxxx
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...