Массив XML в PHP и теги HTML - PullRequest
       0

Массив XML в PHP и теги HTML

1 голос
/ 07 декабря 2011

Привет, у меня проблема с функционированием фида. У меня в xml есть тег description, а внутри HTML-код теперь php обрабатывает теги HTML как другие теги xml и создает больше массивов. Как я могу остановить это от создания массивов из тегов HTML? например.

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

its out putting

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

PHP код:

<code>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); ?>
<? PHP foreach ($ сделок как $ сделки) { $ This-> Deals-> importWahanda ($ сделки); } }

Пример 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>

Ответы [ 2 ]

0 голосов
/ 07 декабря 2011

Вы можете либо поместить свой HTML-код в CDATA, как предложено Agop, либо кодировать символы - используйте <вместо <,> вместо> и т. Д. Что касается 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>
0 голосов
/ 07 декабря 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...