2011-11-23 116 views
1

我有一个写入XML文件的系统。在添加PHP之前编辑字符串在添加之前

的问题是,我不能在XML文件中有这样的符号&

我需要更换这个符号无论它是在代码中查找与&

问题是我有一个字符串的LOT ,我不想应用一个函数来替换每个单独字符串的符号。

这是一个例子:

$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;每次遇到这个符号。

请帮帮我!

感谢

回答

2

在脚本的最后,当你完成添加代码字符串,添加以下内容:

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

您可以用正则表达式也这样做,但这样会藏汉工作: - )

+0

最后?不在顶部?如果我把它放在底部,它不会写错吗?在写任何东西之前不应该遵循这个规则吗? –

+0

不,因为这个搜索每一个&后都执行,所以你需要在字符串中实际有&符号才能工作。你必须在你要输出到文件或回声之前使用它,或者其他什么。 –

+0

谢谢。它不需要额外的$ stringData。=而不是$ stringData =?谢谢 –

2

这可能太过牵强......但在构建XML输出后简单使用str_replace怎么办?

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

注:

这将取代甚至已经存在&amp;&amp;amp;,所以一定要确保你不已经在使用此代码之前有一些&amp;在您的字符串。

0

利用这一点,它应该很好地工作:

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

0

我不知道如果我理解正确你的问题。

基本上,在任务结束时,你&

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

取代&内StringData是所有出现在新的变量,你可以看到,所有&与&

现在条代替您无法在浏览器中看到结果,因为浏览器将显示全部&为&

您需要查看代码或在终端中测试代码。