Gå til innhold

[Løst] DOMDocument norsk tegnsett


Anbefalte innlegg

Hei. Jeg henter noe kommunale data og skal konvertere det til XML, for å øve meg litt i php. Men æøå blir ikke formatert skikkelig.

 

<?php
   //åpne dokumentet for driftsbudsjett 2012
  $handle = fopen("https://www.bergen.kommune.no/bk/multimedia/archive/00114/Datagrunnlag_drift__114176a.csv", "r");
  //XML dom
  $dom = new DOMDocument('1,0', 'UTF-8');
  $xmlRoot = $dom->createElement("xml");
  $xmlRoot = $dom->appendChild($xmlRoot);

  //array til feltnavn
  $fieldNames = array();


  //første linje inneholder felttitler, vi befinner oss i utgangspunktet på første linje, derfor setter vi en boolsk verdi her.
  $firstLineBool = true;
  //tar for seg hver linje i dokumentet
   while (($data = fgetcsv($handle, 5000, ",")) !== FALSE) {

     //for første linje lagrer vi alle feltnavn i en array
     if($firstLineBool) {
       //vi splitter linjen etter semikoloner
       $pieces = explode(";", $data[0]);
       //hver av delene fra linjen legger vi i feltnavn-arrayen vi definerte i begynnelsen.


       foreach($pieces as $piece) {

            //regex for å lage lovlige nodenavn
            $piece = preg_replace('/[^0-9a-z ]+/i', "",  $piece);
            //hvis den begynner med et tall legg til en "a" foran (for man kan ikke begynne navnet på et element med et tall)
            if(is_numeric(substr($piece, 0, 1))) {
                $piece = "a" . $piece;
            }
           $fieldNames[] = $piece;       
       }


   }

   else {
     //vi splitter linjen etter semikoloner    
     $pieces = explode(";", $data[0]);
     //legger til et barn i xml-dokumentet vårt
     $entity = $dom->createElement("Post");
     $entity = $xmlRoot->appendChild($entity);

     //for hver databit som nå ligger i $pieces lager vi et xml-element med dataene i, basert på feltnavnene vi fikk i første linje av dokumentet
     $whereInFieldNames = 0;
     foreach($pieces as $piece) {
         $element = $dom->createElement($fieldNames[$whereInFieldNames]);
         $element = $entity->appendChild($element);

         $content = $dom->createTextNode($piece);
         $element->appendChild($content);

         $whereInFieldNames++;
     }
   }
   $firstLineBool = false;

}
echo $dom->saveXML(); 

?>

 

Nå er utf-8 satt, om jeg setter ISO-8859-1, får jeg følgende output, det vil si det stopper på første "å":

 

<br />
<b>Warning</b>:  DOMDocument::saveXML() [<a href='domdocument.savexml'>domdocument.savexml</a>]: output conversion failed due to conv error, bytes 0xE5 0x64 0x73 0x6C in <b>C:\xampp\htdocs\test\kommbuds.php</b> on line <b>63</b><br />
<?xml version="1,0" encoding="ISO-8859-1"?>
<xml><Post><Avdeling>1</Avdeling><AvdelingT>Byr

 

kan det være på serversiden hos meg at jeg har problemer, eller er dette noe som er kjent?

Endret av poande05
Lenke til kommentar
Videoannonse
Annonse

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...