【问题标题】:XML to PHP array, and HTML TagsXML 到 PHP 数组和 HTML 标签
【发布时间】:2011-12-07 16:20:09
【问题描述】:

嗨,我遇到了我的提要功能问题,我的 xml 中有描述标签,里面是 html 代码。现在 php 将 HTML 标签视为其他 xml 标签并制作更多数组。如何阻止它从 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>

【问题讨论】:

  • 添加了相关的代码:) PS所有其他的东西都只是描述,因为它不会让你将数组添加到数据库:)
  • 您想将其保留为“纯文本”吗?也许你想试试 CDATA? en.wikipedia.org/wiki/CDATA
  • 不想保留 html 标签 :) 感谢回复

标签: php html xml arrays codeigniter


【解决方案1】:

您可以按照 Agop 的建议将 HTML 放入 CDATA,或者对字符进行编码 - 使用 代替 > 等。就 XML 而言,它们是相同的。我会选择 CDATA 选项,因为你有很多行 HTML,而且它更具可读性。

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

【讨论】:

  • 是否可以在描述标签之后和用 php 关闭之前添加 CDATA?
【解决方案2】:

【讨论】:

  • 我无权访问 XML 文档来编辑它 :( 如果我下载文件,它会停止我想要的自动化,因为有 500 条描述 :(
  • 你可以尝试使用正则表达式匹配 xml 元素吗?
  • 我对正则表达式很垃圾,不知道如何诚实。是否可以在描述标签之后和用 php 关闭之前添加 CDATA?
猜你喜欢
  • 2019-09-06
  • 2014-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
  • 2017-02-08
  • 1970-01-01
相关资源
最近更新 更多