2012-01-31 69 views
0

我有为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 &amp; Industrial &gt; Construction</g:google_product_category> 
<g:product_type>Spray Foam Parts &amp; Supplies &gt; 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 &amp; Industrial &gt; Construction</g:google_product_category> 
<g:product_type>Spray Foam Parts &amp; Supplies &gt; 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 &amp; Industrial &gt; Construction</g:google_product_category> 
<g:product_type>Spray Foam Parts &amp; Supplies &gt; 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格式错误,唯一我能想到的是在描述标签的空行

回答

3

你可以尝试剥离出这样

<description><?php echo str_replace(array("\r\n", "\n"), ' ', $row['short_description']); ?></description> 
换行符

请参阅PHP手册中的str_replace()函数。

-1

你可以试试这个功能

function removeSpaces($buffer){ 
    $buffer = str_replace(array('\n', '\r'), array('', ''), $data); 
    return $buffer; 
} 

@ob_start("ob_gzhandler"); 
@ob_start("removeSpaces"); 

将这个任意PHP页面的顶部,它会采取你的问题的关心

0

trim()功能将的开头和结尾删除空格串。如果你想从字符串中的任何地方发生的删除换行符,你可以做这样的事情:

str_replace(array("\n","\r\n"), "", $row['short_description'];);

如果你有过如何将数据存储在数据库中的任何控制,我会考虑“清理“输入具有类似的功能,因此您不必混淆此页面。

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...]