2012-01-31 67 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...]