Замените <br>на \ n в sed или PHP в файле XML - PullRequest
1 голос
/ 05 марта 2019

Мои <br> теги стали &lt;br&gt; после экспорта XML-файла. Я хочу заменить каждые &lt;br&gt; на \n

Вот пример строки, где это происходит:

to download the ~ &lt;br&gt;to mark on the ~ &lt;br&gt;to attach/enclose the ~

Я хотел бы иметь:

to download the ~ \nto mark on the ~ \nto attach/enclose the ~

Я попробовал следующий путь в PHP после некоторого исследования:

$filexml='myfile.xml';

$oldxml = simplexml_load_file($filexml);

$xml = simplexml_load_string ( str_replace( "&lt;br&gt;", "\n", $oldxml->asXml() ) );
$xml->asXml('updated.xml');

Нет заменяемых строк, файл updated.xml имеет то же содержимое, что и myfile.xml.

Я пытался использовать sed для замены строки:

sed -i "s/&lt;br&gt;/\n/g" myfile.xml

Снова никакие строки не заменяются, myfile.xml остается неизменным.

Если у кого-нибудь есть ответ, я был бы благодарен!

Ответы [ 2 ]

2 голосов
/ 05 марта 2019

Можете ли вы попробовать через Stream EDitor следующую команду:

sed -i 's/original/new/g' file.txt

Объяснение:

  • sed = Stream EDitor
  • -i = на месте (чтобы сохранить обратно в исходный файл)
  • s = команда замены
  • original = выражение или слово для замены
  • new = текст для замены на
  • g = global (заменить все совпадения, а не только первое вхождение
  • file.txt = имя файла

Edit 1

Этот обходной путь дал мне запрошенный для вас результат, пожалуйста, проверьте его:

$str = "&lt;br&gt;to mark on the ~ &lt;br&gt;to attach/enclose the";
$str1=str_replace( "&lt;br&gt;", "\\n", $str);
str_replace ("<br>", "\\n", $str1);
echo $str1;

Могу ли я спросить, какое приложение вы используете для извлечения файла XML?

0 голосов
/ 05 марта 2019

Я скопировал содержимое моего экспортированного XML-файла, просто создал новый и использовал команду sed для этого файла.Это сработало как-то, но если кто-то знает, почему мой оригинальный XML был таким упрямым, я все равно буду благодарен!

...