2011-12-07 15 views
1

こんにちは、私はフィードタグを持っています。記述タグがあり、内部はhtmlコードです。今PHPはHTMLタグを他のXMLタグとして扱い、より多くの配列を作成しています。 HTMLタグから配列を作成しないようにするにはどうすればよいですか?例えば、 。XMLからPHPへの配列、およびHTMLタグ

<description> 
    <h3>Some text</h3> 
</description> 

its out putting 

array['description'] => array['h3'] => "someText" 

PHPコード:

public function merchant_import_wahanda(){ 
     if (!$this->session->userdata('logged_in')){ 
      redirect('admin/login'); 
     } 

     $data['pageTitle'] = 'Merchant Admin'; 
     $data['error_warning'] = ''; 
     $data['success'] = ''; 

     $xmlfile= 'http://www.wahanda.com/rss/mobdeal.xml'; 
     $xmlRaw = file_get_contents($xmlfile); 

     $this->load->library('xml'); 
     $xmlData = $this->xml->xml_parse($xmlRaw); 
     $this->load->model('admin/Deals_model', 'Deals'); 
     $this->load->model('admin/Cities_model', 'Cities'); 
     $this->load->model('admin/Partners_model', 'Partners'); 

     //Get City ID 
     foreach($xmlData["channel"]["item"] as $product){ 
      $cityName[] = $product['w:location']["@content"]; 
     } 

     $cities = array_unique($cityName); 
     foreach ($cities as $city){ 
      if(!$this->Cities->getCityByName($city)){ 
       $this->Cities->addFeedCity($city); 
      } 
     } 

     //Get Partner ID 
     foreach($xmlData["channel"]["item"] as $product){ 
      $partnerName[] = $product['w:venues']['w:venue']['w:name']; 
     } 

     $partners = array_unique($partnerName); 
     foreach ($partners as $partner){ 
      if(!$this->Partners->getPartnerByName($partner)){ 
       $this->Partners->addFeedPartner($partner); 
      } 
     } 

     foreach($xmlData["channel"]["item"] as $product){ 
      $cityID = $this->Cities->getCityByName($product['w:location']["@content"]); 
      $partnerID = $this->Partners->getPartnerByName($product['w:venues']['w:venue']['w:name']); 

      $deals[] = array(
       'dealTitle' => $product['title'], 
       'price' => $product['w:price'], 
       'image' => $product['w:hiResImageLink'], 
       'buyLink' => $product['link'], 
       'startDate' => $product['w:startDate'], 
       'endDate' => $product['w:endDate'], 
       'partner' => $partnerID['partner_id'], 
       'city' => $cityID['city_id'], 
       'description' => $product['description'], 
       'RRP' => $product['w:rrp'], 
       'discount' => $this->getDiscount($product['w:price'], $product['w:rrp']) 
      ); 
     } 
     ?><pre><?php var_dump($deals); ?></pre><?php 
     foreach($deals as $deal){ 
      $this->Deals->importWahanda($deal); 
     } 
    } 

XMLの記述例:

<description> 
      <a id="Wahanda_loves" name="Wahanda_loves"></a><h3>Wahanda loves</h3> 

<p>If you&#39;re fed up of shaving and can&#39;t bear the pain of waxing then remove hair the easy way with this course of IPL hair removal. It works by using beams of light to damage the hair follicle, meaning after a course of treatment you&#39;ll be hair-free for longer. Five sessions will catch the hair in each stage of the growth cycle so your skin will stay silky-smooth and fuzz-free for longer.</p> 
<a id="What.27s_in_it_for_you.3F" name="What.27s_in_it_for_you.3F"></a><h3>What&#39;s in it for you?</h3> 


<ul> 
<li>Five IPL Sessions on <b>one</b> of the following areas: 
<ul> 
<li>Lip and Chin</li> 
<li>Bikini Line</li> 
<li>Underarm</li></ul></li></ul> 


<ul> 
<li>Location: <a href="/place/depicool-leeds/" title="place/depicool-leeds/">DepiCool</a>, Leeds</li> 
<li>Available Monday - Saturday</li> 
<li><b>Strict voucher limit of 1 per person.</b> May buy multiples as gifts</li> 
<li>You will receive an eVoucher valid for one person to print out and take with you.</li> 
<li>Voucher valid for 6 months</li> 
<li>Cannot be used in conjunction with any other offer. Subject to availability. No cash alternative</li></ul> 

<p>You&#39;ll get a snazzy pair of goggles to wear during the treatment so your eyes are protected throughout the fifteen minute procedure. DepiCool&#39;s therapists are fully qualified and consider your comfort and safety to be the most important part of the treatment process. All staff are trained to be able to answer your questions so you&#39;ll be informed at at ease at all times. </p> 
<a id="Want_to_buy_this_as_a_gift.3F" name="Want_to_buy_this_as_a_gift.3F"></a><h3>Want to buy this as a gift?</h3> 

<p>If you&#39;re feeling generous and want to buy this as a gift for someone, don&#39;t worry - the voucher won&#39;t show the price or discount of the MobDeal if you add a gift message, making it perfect for giving as a gift. All you need to do is choose how many vouchers you&#39;d like to buy at checkout so you can enter each recipient&#39;s name on the coupon, then add your message for the lucky recipient.</p></description> 
+0

は、いくつかのコードを表示する - –

+0

は、それはあなたがデータベース:) –

+0

に配列を追加してみましょう文句を言わないように、すべての他のものは、単に説明を作業しているコードの関連:) PSを追加しましたあなたは「プレーンテキスト」として、それを維持したいですか?あなたはCDATAを試してみたいと思いますか? http://en.wikipedia.org/wiki/CDATA – Riyono

答えて

0

Agopで提案されているように、HTMLをCDATAに配置したり、文字をエンコードしたりすることができます。<の代わりに<,>の代わりに使用します。XMLに関しては同じです。私はHTMLの多くの行を持っているので、CDATAオプションのために行くだろう、そしてそれはより読みやすいです。

<description> 
    <![CDATA[<a id="Wahanda_loves" name="Wahanda_loves"></a><h3>Wahanda loves</h3> 

    <p>If you&#39;re fed up of shaving and can&#39;t bear the pain of waxing then remove hair the easy way with this course of IPL hair removal. It works by using beams of light to damage the hair follicle, meaning after a course of treatment you&#39;ll be hair-free for longer. Five sessions will catch the hair in each stage of the growth cycle so your skin will stay silky-smooth and fuzz-free for longer.</p> 
    <a id="What.27s_in_it_for_you.3F" name="What.27s_in_it_for_you.3F"></a><h3>What&#39;s in it for you?</h3> 

    ... 

    ]]> 
</description> 
+0

説明タグの後でphpで閉じる前に、CDATAを追加する場所はありますか? –

0

CDATA

+0

XML文書にアクセスする権限がありません:(ファイルをダウンロードするとオートメーション私は、500の説明のようにしたい:( –

+0

正規表現を使用してxml要素を一致させようとすることができますか? – greenLizard

+0

正規表現でどのように正直であるかわからないです。 ? –

関連する問題