Autor | Zpráva | ||
---|---|---|---|
seem Profil * |
#1 · Zasláno: 14. 6. 2008, 20:43:47
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); } |
||
Časová prodleva: 2 měsíce
|
|||
Portos Profil * |
#2 · Zasláno: 13. 8. 2008, 16:37:21
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 |
||
Časová prodleva: 16 let
|
0