Autor Zpráva
seem
Profil *
ahoj,

poraďte prosím s jednou chybkou u xml parseru, při předávání text řetězce do pole se textový řetězec rozdělí pokud narazí na dikaritiku. Nemohu přijít na to proč.

V tomto řádku
//category
if ($this->priv_znacka == "NAME" and $jecategory) {$this->cur_category['name'] = $data;}

pokud $data obsahuje např.: "Baterie do digitálních fotoaprátů" rozdělí to na "Baterie do digit" a "álních fotoaparátů", vyzkoušeno i bez mb_convert_encoding

nemohu přijít na to kde je problém

moc díky za pomoc
petr


function PocatecniZnacka ($parser, $nazev, $atributy)
{
global $jecategory;
$this->priv_znacka=$nazev;
//echo "Narazil jsem pri ctení na znacku $nazev s atributy:"."<BR>";
//echo print_r($atributy)."<BR>";
if ($nazev == "PRODUCT") {$this->cur_product[0] = $atributy['ID']; $this->cur_product[12]=$atributy['KEY'];}
if ($nazev == "PRICE") {$this->cur_product[8] = $atributy['PRICE']; $this->cur_product[9]=$atributy['VAT'];}

//picture
if ($nazev == "PICTURE") {$this->products['images'][$atributy['ID_PRODUCT']] = $atributy['SRC'];}

//category_product
if ($nazev == "CATEGORY_PRODUCT") {$this->products['category_product'][$atributy['ID_PRODUCT']] = $atributy['ID_CATEGORY'];}

//category
if ($nazev == "CATEGORY") {$this->cur_category['id'] = $atributy['ID'];$this->cur_category['id_parent'] = $atributy['ID_PARENT'];}
if ($nazev == "CATEGORY") $jecategory=true;

}

function KoncovaZnacka ($parser, $nazev) {
if ($nazev == "PRODUCT") {$this->products['product_list'][] = $this->cur_product;}
if ($nazev == "CATEGORY") {$this->products['category'][$this->cur_category['id']] = $this->cur_category; unset($this->cur_category);}
}

function data ($parser, $data)
{
global $jecategory;
//echo $data;
//echo "<br>";
//name
if ($this->priv_znacka == "NAME"){$this->cur_product[1] = $data;}//if ($this->priv_znacka == "NAME"){$this->cur_product[1] = mb_convert_encoding($data, "ISO-8859-2", "UTF-8");}
//typecompatible
if ($this->priv_znacka == "TYPECOMPATIBLE"){$this->cur_product[2] = $data;}
//type
if ($this->priv_znacka == "TYPE") {$this->cur_product[3] = $data;}
//capacity
if ($this->priv_znacka == "CAPACITY"){$this->cur_product[4] = $data;}
//color
if ($this->priv_znacka == "COLOR") {$this->cur_product[5] = $data;}
//voltage
if ($this->priv_znacka == "VOLTAGE") {$this->cur_product[6] = $data;}
//store
if ($this->priv_znacka == "STORE") {$this->cur_product[7] = $data;}
//producer
if ($this->priv_znacka == "PRODUCER") {$this->cur_product[10] = $data;}
//warranty
if ($this->priv_znacka == "WARRANTY") {$this->cur_product[11] = $data;}

//category
if ($this->priv_znacka == "NAME" and $jecategory) {$cat_name = mb_convert_encoding($data, "ISO-8859-2", "UTF-8"); $this->cur_category['name'] = $cat_name; $dataa = stripslashes($cat_name); echo $dataa; echo " - ";}


}

function parse ()
{
$this->priv_parser = xml_parser_create ("us-ascii");
xml_parser_set_option($this->priv_parser, XML_OPTION_TARGET_ENCODING, "us-ascii");
xml_set_object($this->priv_parser, $this);
xml_set_element_handler ($this->priv_parser, "PocatecniZnacka", "KoncovaZnacka");
xml_set_character_data_handler($this->priv_parser, "data");
if (!($obsahsouboru = fopen($this->soubor, "r"))) die("Nemohu otevrít XML pro ctení.");
while ($data = fread($obsahsouboru, 1024)) xml_parse($this->priv_parser, $data, feof($obsahsouboru));
xml_parser_free($this->priv_parser);
}
Portos
Profil *
Měl jsem taky ten samý problém a příčina v mém případě bylo to, že PHP5 s tím má problémy je to vyloženě pro PHP4.
V PHP5 radši používám teda SimpleXMl

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: