我的代码是为Google购物创建XML文档。谷歌陷入了空白。我不知道如何去除线条。该代码来自Magento Commerce数据库。
<?php echo '<?xml version="1.0" ?>'; ?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0" xmlns:c="http://www.base.google.com/cns/1.0">
<channel>
<title>Spray Foam Systems</title>
<link>http://www.sprayfoamsys.com/store/</link>
<description>Spray Foam Rigs, Spray Foam Equipment, Sprayfoam Parts and Supplies.</description>
<?php
$con = mysql_connect(REMOVED) or die(mysql_error());
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("sprayfoa_store", $con);
$query = mysql_query("SELECT * FROM `catalog_product_flat_1` WHERE `visibility` = 4 ORDER BY entity_id ASC")
or die(mysql_error());
?>
<?php
while($row = mysql_fetch_array($query))
{
?>
<item>
<g:id><?php echo $row['entity_id']; ?></g:id>
<title><?php echo $row['name']; ?></title>
<description><?php echo $row['short_description']; ?></description>
<g:google_product_category>Business & Industrial > Construction</g:google_product_category>
<g:product_type>Spray Foam Parts & Supplies > Fusion AP Parts</g:product_type>
<link>http://sprayfoamsys.com/store/<?php echo $row['url_path']; ?></link>
<g:image_link>http://sprayfoamsys.com/store/media/catalog/product<?php echo $row['small_image']; ?></g:image_link>
<g:condition>new</g:condition>
<g:availability>in stock</g:availability>
<g:price><?php echo $row['price']; ?></g:price>
<g:brand>
<?php
$entity_id = $row['entity_id'];
$query2 = mysql_query("SELECT * FROM `catalog_product_entity_varchar` WHERE entity_id = '$entity_id' AND attribute_id = '127'")
or die(mysql_error());
while($row2 = mysql_fetch_array($query2))
{
echo $row2['value'];
} ?>
</g:brand>
<g:mpn><?php echo $row['sku']; ?></g:mpn>
</item>
<?php
}
mysql_close($con);
?>
</channel>
</rss>
输出如下:
<item>
<g:id>15</g:id>
<title>DK 817 - Gun Cleaning Solvent and Lubricator - Aerosol Can 16 oz. </title>
<description>DK 817 is a cleaner-lubricant used on for cleaning polyurethane dispensing equipment and guns. DK817 comes in a 16 oz. aerosol can. Contractors praise it's ability to quickly clean components with uncured polyurethane materials. </description>
<g:google_product_category>Business & Industrial > Construction</g:google_product_category>
<g:product_type>Spray Foam Parts & Supplies > Fusion AP Parts</g:product_type>
<link>http://sprayfoamsys.com/store/dk-817-gun-cleaning-solvent-and-lubricator-aerosol-can.html</link>
<g:image_link>http://sprayfoamsys.com/store/media/catalog/product/d/k/dk817.jpg</g:image_link>
<g:condition>new</g:condition>
<g:availability>in stock</g:availability>
<g:price>24.9900</g:price>
<g:brand>brand
</g:brand>
<g:mpn>partnumber</g:mpn>
</item>
<item>
<g:id>16</g:id>
<title>Allegro Full Mask SAR Replacement Lens 9901-09L</title>
<description>Replacement lens for the 9901 Series Allegro Full Face Mask. Clear, scratch resistant lens. Easy to replace. Lens only.
Allegro 9901-09L</description>
<g:google_product_category>Business & Industrial > Construction</g:google_product_category>
<g:product_type>Spray Foam Parts & Supplies > Fusion AP Parts</g:product_type>
<link>http://sprayfoamsys.com/store/allegro-full-mask-sar-replacement-lens-9901-09r.html</link>
<g:image_link>http://sprayfoamsys.com/store/media/catalog/product/a/l/al-9901-09l-1.jpg</g:image_link>
<g:condition>new</g:condition>
<g:availability>in stock</g:availability>
<g:price>75.0000</g:price>
<g:brand>
Allegro</g:brand>
<g:mpn>9901-09L</g:mpn>
</item>
第一项没有问题,因为描述标签没有空行,但是第二项,给我一个XML格式错误,我唯一能想到的是描述标签中的空白行
答案 0 :(得分:3)
您可以尝试删除像这样的新行
<description><?php echo str_replace(array("\r\n", "\n"), ' ', $row['short_description']); ?></description>
请参阅PHP手册中的str_replace()函数。
答案 1 :(得分:0)
trim()
函数将从字符串的开头和结尾删除空格。如果要删除字符串中任何位置发生的换行符,可以执行以下操作:
str_replace(array("\n","\r\n"), "", $row['short_description'];);
如果您可以控制数据在数据库中的存储方式,我会考虑&#34;清理&#34;具有类似功能的输入,因此您不必弄乱此页面。
答案 2 :(得分:0)
您可以将其更改为:
[...snip...]
echo $row2['value'];
} ?></g:brand> <---closing tag up against closing PHP tag
<g:mpn><?php echo $row['sku']; ?></g:mpn>
</item>
<?php <---eliminated blank lines before php tag
}
mysql_close($con);
?>
[...snip...]
答案 3 :(得分:-1)
您可以尝试此功能
function removeSpaces($buffer){
$buffer = str_replace(array('\n', '\r'), array('', ''), $data);
return $buffer;
}
@ob_start("ob_gzhandler");
@ob_start("removeSpaces");
把它放在任何php页面的顶部,它会处理你的问题