Так что я текстовый файл, который выглядит контент, например, как folows:Заменить одну строку с другой с Laravel или PHP
Название: 'Джон',
Фамилия: 'Doe',
Возраст: 35
Но я не знаю точно, если текущая фамилия Doe все, что могло быть сгенерированы там.
И Мне нужно заменить эту фамилию на другую. Поэтому мне нужно как-то открыть файл, найти нужное место (я точно знаю, что он начинается с Surname: '
и заканчивается ',
, и мне нужно заменить строку между этими двумя подстроками, независимо от того, что было до этого, без нарушения структуры файла (теряя разрывы строк и так далее, фактический файл довольно долго, так что добавление \ п вручную не вариант)
до сих пор я пытался это
$content = file_get_contents('text.txt');
$search = "/[^Surname: '](.*)[^',]/";
$replace = 'Smith';
$content = preg_replace($search,$replace,$content);
file_put_contents('text.txt', $content);
Но он заменяет почти все с. «Смит», потому что комбинация ',
довольно распространена в этом файле, а также превращает весь файл в одну строку.
Итак, что я мог сделать, чтобы решить мою проблему? Был бы очень признателен за любую возможную помощь!
UPD: str_replace может быть тем, что мне нужно, но сначала мне нужно извлечь всю строку Surname: 'Doe',
из файла, чтобы получить текущую фамилию.
'[^ Фамилия]' будет соответствовать строка, которая не содержит какой-либо из символов 'S urname:«' – apokryfos
Является ли php правильным инструментом для этого? Если вы no * nix, вы можете использовать sed, или даже если вам нужно запустить его из Интернета, вы можете вызвать скрипт bash с помощью sed http://brunolinux.com/02-The_Terminal/Find_and%20Replace_with_Sed.html – rypskar