Редактировать строку в PHP перед добавлением - PullRequest
1 голос
/ 23 ноября 2011

У меня есть система, которая записывает файл XML.

Проблема в том, что я не могу иметь в файле XML этот символ &

Мне нужно заменить этот символ, где бы он ни находился в коде, на &

Проблема в том, что у меня много строк, и я не хочу применять функцию, которая заменит этот символ для КАЖДОЙ ОДНОЙ строки, которая у меня есть.

Это пример:

$stringData ="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
$stringData .="<ingrooves_import xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xsi:schemaLocation=\"http://schemas.ingrooves.com/INgrooves/INgroovesImport_1_0.xsd\" schema_version=\"1\" schema_revision=\"0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.ingrooves.com/INgrooves/INgroovesImport_1_0.xsd\">\n";
$stringData .= "<album>\n";
$stringData .= "<title>".$albumTitle."</title>\n";
$stringData .= "<label_reference>LA0001</label_reference>\n";
$stringData .= "<performer>".$MainArtist."</performer>\n";
$stringData .= "<catalog_number>".$CatalogueNumber."</catalog_number>\n";
$stringData .= "<upc>".$UPC_EAN_JAN."</upc>\n";
$stringData .= "<release_date>".$releaseDate."</release_date>\n";
$stringData .= "<copyright>".$DigiDistYear."</copyright>\n";

И в моем коде есть еще много $ stringData. Таким образом, вы можете понять, что я не хочу применять для каждого $ stringData код, который заменит этот символ.

Я хочу найти способ сообщить коду, что для любой переменной $ stringData и для любого содержимого, с которым встретится этот $ stringData, он должен заменить & на &amp;

Есть ли способ сделать это?

В двух словах код должен сделать это:

Для каждого содержимого, которое вы встретите внутри переменной $ stringData, отныне вы должны менять & на &amp; каждый раз, когда встречаете этот символ.

Пожалуйста, помогите мне!

Спасибо

Ответы [ 4 ]

2 голосов
/ 23 ноября 2011

Это может быть слишком далеко ... но как насчет простого использования str_replace после построения вывода XML?

$stringData = str_replace('&','&amp;',$stringData);

Примечание:

Это заменит даже уже существующий &amp; на &amp;amp;, поэтому перед использованием этой строки кода убедитесь, что в вашей строке еще нет &amp;.

2 голосов
/ 23 ноября 2011

В конце скрипта, когда вы закончите добавлять код в строку, добавьте следующее:

$stringData = str_replace ('&','&amp;',$stringData);

Вы также можете делать с регулярными выражениями, но это также будет работать: -)

0 голосов
/ 23 ноября 2011

Я не уверен, правильно ли я понял ваш вопрос.

Как правило, в конце задания вы заменяете все вхождения & inside stringData на &

$myString = "this is a test & you &&& can & see";
$newString = str_replace('&', '&amp', $myString);
echo $newString;

В новой переменной вы можете видеть, что все & и отозваны теперь с &

Вы не можете видеть результаты в браузере, потому что браузер будет отображать все & как &

Вам нужно посмотреть код или проверить код в терминале.

0 голосов
/ 23 ноября 2011

используйте это, и оно должно работать нормально:

$stringData = str_replace('&','&amp;',$stringData);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...