Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenie regularne i CDATA
Forum PHP.pl > Forum > PHP
Mejdej
Witam,

Potrzebuje porady kogoś bardziej zorientowanego w wyrażeniach regularnych, bo chyba bez nich nic nie zrobię.
Problem mam taki, że mam 45Mb danych do wgrania do bazy. Są wyeksportowane, ale przy imporcie wyskakują błędy. Jest to spowodowane tym, że w jednym z pol są dane CDATA, w których to są apostrofy. Właśnie te apostrofy "gryzą" się z apostrofami nadrzędnymi.

Przykładowy rekord do wstawienia:
  1. INSERT INTO xml (id, id_flash, name, xml, class, subclass, quality, slot, icon, level) VALUES('7', '11766', '1000G', '<?xml version="1.0" encoding="UTF-8"?><gem><item id="7"><name><![CDATA[1000G]]></name><level>1</level><quality id="2">Uncommon</quality><class id="7"><![CDATA[Trade Goods]]></class><subclass id="0"><![CDATA[]]></subclass><icon displayId="11766">ss_gem_lo_02</icon><inventorySlot id="0"></inventorySlot><htmlTooltip><![CDATA[<table><tr><td><b class="q2">1000G</b></td></tr></table><table><tr><td><span class="q">&quot;1000 G&quot;</span></td></tr></table>]]></htmlTooltip><json><![CDATA[id:7,name:'51000G',level:1,reqlevel:1,slot:0,classs:7,subclass:0]]></json><jsonEquip><![CDATA[reqlevel:1,sellprice:10000000]]></jsonEquip><link>http://www.page.com/?item=7</link></item></gem>', '7', '0', '2', '0', 'ss_gem_lo_02', '1');


Pomyślałem, że jak przemiele wszystko skryptem i poprzedze wszystkie apostrofy wewnątrz CDATA znakiem "\" to będzie wszystko dobrze.

Tylko nie mam pojęcia jak zbudować potrzebne wyrażenie regularne.

Pomoże ktoś?
Blame
Nie wiem czy o to konkretnie chodzi ale może przydać ci się funkcja add_slashes a potem strip_slashes.
Mejdej
Ta funkcja moze sie przydac, ale problem jest w tym, ze trzeba dodac te slashe tylko we wnetrzu znacznika CDATA a nie w calym stringu. Dlatego potrzebuje wyrazenie regularne, zeby wyciagnac z kazdego rekordu ciag znakow zawarty w znaczniku CDATA, na ktorym to bedzie mozna uzyc dopiero tej funkcji.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.