За последние 24 часа нас посетили 21532 программиста и 1019 роботов. Сейчас ищут 699 программистов ...

чтение xml файла

Тема в разделе "Вопросы от блондинок", создана пользователем vik787878, 21 дек 2017.

  1. vik787878

    vik787878 Новичок

    С нами с:
    23 окт 2017
    Сообщения:
    12
    Симпатии:
    0
    Доброго дня всем.
    Когда загоняю xml в базу MySql иногда обрезаются строки.
    Например если есть строка где написано "Петя <Вася> Миша". То в базу записывается только "Миша".
    Как я понимаю это происходит из за этих символов ( < > ).
    Но как решить эту проблему не знаю.
    xml - windows-1251
    сайт и MySql - utf-8
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    А как ты загоняешь XML в базу MySql?
     
  3. vik787878

    vik787878 Новичок

    С нами с:
    23 окт 2017
    Сообщения:
    12
    Симпатии:
    0
    Или весь код выслать?
    --- Добавлено ---
    PHP:
    1. $filename1 = 'file/Price.xml';
    2.         ConnectDB();
    3.         $elements   = null;  // просто имя текущей ноды
    4.         $offer = null; // собирает один элемент offer
    5.         $att = null;
    6.         $att2 = null;
    7. categories($filename1);
    8.         // Вызывается, когда встречается открывающий тег.
    9.         // если это offer - создаем массив под него
    10.         function startElements($parser, $name, $attrs)  
    11.         {
    12.             global $offer, $elements, $att, $att2;
    13.             if ($name == 'OFFER') {
    14.             $offer = array();
    15.             $att = array($attrs[ID]);
    16.             $att2 = array($attrs[ORDERBY]);
    17.             }
    18.             $elements = $name;
    19.            
    20.         }
    21.  
    22.         // Вызывается, когда тег закрывается
    23.         // если это тег offer - печатаем содержимое и вычищаем
    24.         function endElements($parser, $name)
    25.         {
    26.             global $offer, $elements, $att, $att2;
    27.             global $mysqli;
    28.                
    29.             if(!empty($name)) {
    30.                 if ($name == 'OFFER') {
    31.                    
    32.                     //$array12= "$att[ID]";
    33.                     $oId2 = $att[0];
    34.                     $oORDERBY = $att2[0];
    35.                     $oUid= "$offer[UID]";
    36.                     $oUrl= "$offer[URL]";          
    37.                     $oPriceR= "$offer[PRICER]";
    38.                     $oPriceB= "$offer[PRICEB]";
    39.                     $oPriceC= "$offer[PRICEC]";
    40.                     $oPriceD= "$offer[PRICED]";
    41.                     $oPriceE= "$offer[PRICEE]";
    42.                     $oPriceF= "$offer[PRICEF]";  
    43.                     $oPriceRRP = "$offer[PRICERRP]";
    44.                     $oCurrencyId = "$offer[CURRENCYID]";
    45.                     $oCategoryId = "$offer[CATEGORYID]";
    46.                     $oPicture = "$offer[PICTURE]";
    47.                     $oCount1 = "$offer[COUNT]";
    48.                     $oName = "$offer[NAME]";
    49.                     $oWarranty = "$offer[WARRANTY]";
    50.                     $oPN = "$offer[PN]";
    51.                     $oTransit = "$offer[TRANSIT]";
    52.                     $oTransitdate = "$offer[TRANSITDATE]";
    53.                     $oRemote = "$offer[REMOTE]";
    54.                     $oVolume = "$offer[VOLUME]";
    55.                     $oWeight = "$offer[WEIGHT]";
    56.                     //$oRussianName = str_replace("#38","rer","$offer[RUSSIANNAME]");
    57.                     //$oRussianName= htmlentities(htmlentities('&', ENT_QUOTES, 'utf-8'));
    58.                     //$oRussianName = preg_replace('&', '', "$offer[RUSSIANNAME]");
    59.                     $oRussianName="$offer[RUSSIANNAME]";
    60.                     //$oRussianName=htmlspecialchars_decode("$offer[RUSSIANNAME]");
    61.                     $oDescrUpDated = "$offer[DESCRUPDATED]";
    62.                     $oModel = "$offer[MODEL]";
    63.                     $oVendor = "$offer[VENDOR]";
    64.                     $oLastCountry = "$offer[LASTCOUNTRY]";
    65.                     $oLastGTD = "$offer[LASTGTD]";
    66.                     $oColour = "$offer[COLOUR]";
    67.                     $oWarrantyType = "$offer[WARRANTYTYPE]";
    68.                     $oPicture2 = "$offer[PICTURE2]";
    69.                     $oPicture3 = "$offer[PICTURE3]";
    70.                     $oOutOffProd = "$offer[OUTOFPROD]";
    71.                     $oCertificate = "$offer[CERTIFICATE]";
    72.                     $oGTIN = "$offer[GTIN]";
    73.                    
    74.                     if ($oId2 == null) $oId2=0;
    75.                     if ($oORDERBY == null) $oORDERBY=0;
    76.                     if ($oUid == null) $oUid=0;
    77.                     if ($oUrl == null) $oUrl='0';          
    78.                     if ($oPriceR == null) $oPriceR=0;
    79.                     if ($oPriceB == null) $oPriceB=0;
    80.                     if ($oPriceC == null) $oPriceC=0;
    81.                     if ($oPriceD == null) $oPriceD=0;
    82.                     if ($oPriceE == null) $oPriceE=0;
    83.                     if ($oPriceF == null) $oPriceF=0;  
    84.                     if ($oPriceRRP == null) $oPriceRRP=0;
    85.                     if ($oCurrencyId == null) $oCurrencyId='0';
    86.                     if ($oCategoryId == null) $oCategoryId=0;
    87.                     if ($oPicture == null) $oPicture='0';
    88.                     if ($oCount1 == null) $oCount1='0';
    89.                     if ($oName == null) $oName='0';
    90.                     if ($oWarranty == null) $oWarranty='0';
    91.                     if ($oPN == null) $oPN='0';
    92.                     if ($oTransit == null) $oTransit='0';
    93.                     if ($oTransitdate == null) $oTransitdate='0';
    94.                     if ($oRemote == null) $oRemote='0';
    95.                     if ($oVolume == null) $oVolume=0;
    96.                     if ($oWeight == null) $oWeight=0;
    97.                     if ($oRussianName == null) $oRussianName='0';  
    98.                     if ($oDescrUpDated == null) $oDescrUpDated='0';
    99.                     if ($oModel == null) $oModel='0';
    100.                     if ($oVendor == null) $oVendor='0';
    101.                     if ($oLastCountry == null) $oLastCountry='0';
    102.                     if ($oLastGTD == null) $oLastGTD='0';
    103.                     if ($oColour == null) $oColour='0';
    104.                     if ($oWarrantyType == null) $oWarrantyType='0';
    105.                     if ($oPicture2 == null) $oPicture2='0';
    106.                     if ($oPicture3 == null) $oPicture3='0';
    107.                     if ($oOutOffProd == null) $oOutOffProd='0';
    108.                     if ($oCertificate == null) $oCertificate='0';
    109.                     if ($oGTIN == null) $oGTIN='0';
    110.                     if(iconv_strlen($oRussianName)<22) $oCount1='0';;
    111.                    
    112.                    
    113.                    
    114.                        
    115.                     $mysqli->query("INSERT INTO offer_ (Id2_,OrderBy_, Uid_, Url_, PriceR_, PriceB_, PriceC_, PriceD_, PriceE_, PriceF_, PriceRRP_, CurrencyId_, CategoryId_, Picture_, Count_, Name_, Warranty, PN_, Transit_, Transitdate, Remote_, Volume_, Weigth_, RussianName_, DescrUpDated_, Model_, Vendor_, LastCountry_, LastGTD_, Colour_, WarrantyType_, Picture2_, Picture3_, OutOffProd_, Certificate_, GTIN_)
    116.                    VALUES ($oId2, $oORDERBY, $oUid, '$oUrl', $oPriceR, $oPriceB, $oPriceC, $oPriceD, $oPriceE, $oPriceF, $oPriceRRP, '$oCurrencyId', $oCategoryId, '$oPicture', '$oCount1', '$oName', '$oWarranty', '$oPN', '$oTransit', '$oTransitdate', '$oRemote', $oVolume, $oWeight, '$oRussianName', '$oDescrUpDated', '$oModel', '$oVendor', '$oLastCountry', '$oLastGTD',  '$oColour', '$oWarrantyType', '$oPicture2', '$oPicture3', '$oOutOffProd', '$oCertificate', '$oGTIN')");
    117.                    
    118.                     $offer = null;
    119.                    
    120.                 }
    121.                 $elements = null;
    122.             }
    123.         }
    124.  
    125.         // Вызывается для текста, заполняем массив
    126.         function characterData($parser, $data)
    127.         {
    128.             global $offer, $elements, $ell;
    129.             if(!empty($data)) {
    130.                 if ($elements == 'UID'   || $elements == 'URL'  ||    $elements == 'PRICER' || $elements == 'PRICEB'  || $elements == 'PRICEC' || $elements == 'PRICED' || $elements == 'PRICEE' || $elements == 'PRICEF' || $elements == 'PRICERRP' || $elements == 'CURRENCYID' ||
    131.                 $elements == 'CATEGORYID' || $elements == 'PICTURE' || $elements == 'COUNT' || $elements == 'NAME'  || $elements == 'WARRANTY' ||
    132.                 $elements == 'PN' || $elements == 'TRANSIT' || $elements == 'TRANSITDATE' || $elements == 'REMOTE' || $elements == 'VOLUME' ||
    133.                 $elements == 'WEIGHT'  || $elements == 'RUSSIANNAME'  || $elements == 'DESCRUPDATED' || $elements == 'MODEL' ||
    134.                 $elements == 'VENDOR' || $elements == 'LASTCOUNTRY' || $elements == 'LASTGTD' || $elements == 'COLOUR' ||
    135.                 $elements == 'WARRANTYTYPE'  || $elements == 'PICTURE2' || $elements == 'PICTURE3' || $elements == 'OUTOFPROD' ||
    136.                 $elements == 'CERTIFICATE' || $elements == 'GTIN') {
    137.                     $offer[$elements] = trim($data);
    138.                 }
    139.             }
    140.         }
    141.  
    142.         // Собственно, подготавливаем парсер
    143.        
    144.         $parser = xml_parser_create();
    145.  
    146.         xml_set_element_handler($parser, "startElements", "endElements");
    147.         xml_set_character_data_handler($parser, "characterData");
    148.  
    149.         // открываем файл
    150.         if (!($handle = fopen($filename1, "r"))) {
    151.             die("could not open XML input");
    152.         }
    153.  
    154.         while($data = fread($handle, 4096)) // читаем по кусочкам
    155.         {
    156.             xml_parse($parser, $data);  // и стравливаем парсеру
    157.         }
    158.        
    159.         xml_parser_free($parser); // почистим за собой.