Autor Tema: php xml utf8 encoding  (Pročitano 416 puta)

Blokce

  • Novajlija
  • *
  • Poruke: 13
php xml utf8 encoding
« poslato: 02.11.2013 00:19:42 »
proba.php:
Kod: PHP
  1.   $doc = new DOMDocument(); 
  2. $doc->preserveWhiteSpace = false;
  3. $doc->formatOutput = true;
  4. $doc->load("proba.xml");
  5.  
  6. $root = $doc->documentElement;
  7. $filmovi=mysql_query("SELECT * FROM film ORDER BY film_id DESC LIMIT 0,100");
  8. while($pod=mysql_fetch_array($filmovi))
  9. {
  10. $film = $doc->createElement('film');
  11. $film = $root->appendChild($film);
  12.  
  13. $link = $doc->createElement('link');
  14. $link = $film->appendChild($link);
  15. $dodajlink = $doc->createTextNode('film-'.seoURL($pod['film_ime']."_".$pod['film_imesrpski']).'-'.$pod['film_id']);
  16. $dodajlink = $link->appendChild($dodajlink);
  17.  
  18. $ime = $doc->createElement('ime');
  19. $ime = $film->appendChild($ime);
  20. $dodajime = $doc->createTextNode(utf8_encode($pod['film_ime'].' '.$pod['film_imesrpski'].' '.$pod['film_imestrano']));
  21. $dodajime = $ime->appendChild($dodajime);
  22.  
  23. $doc->save("proba.xml"); }

proba.xml:
Kod: XML
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <pretraga>
  3.   <film>
  4.     <link>film-Rough_Magic_Opasna_magija-4657</link>
  5.     <ime>Rough Magic Opasna magija </ime>
  6.   </film>
  7.   <film>
  8.     <link>film-HouseSitter_uvarkua-4656</link>
  9.     <ime>HouseSitter ?uvarku?a </ime>
  10.   </film></pretraga>

livesearch.php:
Kod: PHP
  1. $xmlDoc=new DOMDocument();
  2. $xmlDoc->load("proba.xml");
  3.  
  4. $x=$xmlDoc->getElementsByTagName('film');
  5.  
  6. //get the q parameter from URL
  7. $q=$_GET["q"];
  8.  
  9. //lookup all links from the xml file if length of q>0
  10. if (strlen($q)>0)
  11. {
  12. $hint="";
  13. for($i=0; $i<($x->length); $i++)
  14.   {
  15.   $y=iconv('','UTF-8',$x->item($i)->getElementsByTagName('ime'));
  16.   $z=$x->item($i)->getElementsByTagName('link');
  17.   if ($y->item(0)->nodeType==1)
  18.     {
  19.     //find a link matching the search text
  20.     if (strpos($y->item(0)->childNodes->item(0)->nodeValue,$q))
  21.       {
  22.       if ($hint=="")
  23.         {
  24.         $hint="<a href='".$z->item(0)->childNodes->item(0)->nodeValue . 
  25.         "' target='_blank'>" . 
  26.         $y->item(0)->childNodes->item(0)->nodeValue . "</a>";
  27.         }
  28.       else
  29.         {
  30.         $hint=$hint . "<br /><a href='".$z->item(0)->childNodes->item(0)->nodeValue . 
  31.         "' target='_blank'>" . 
  32.         $y->item(0)->childNodes->item(0)->nodeValue . "</a>";
  33.         }
  34.       }
  35.     }
  36.   }
  37. }
  38.  
  39. // Set output to "no suggestion" if no hint were found
  40. // or to the correct values
  41. if ($hint=="")
  42.   {
  43.   $response="Nema slicnih filmova";
  44.   }
  45. else
  46.   {
  47.   $response=$hint;
  48.   }
  49. //output the response
  50. echo $response;

live pretraga sa: ovog linka
problem je sledeci kao sto sam u naslovu stavio da u PHP napravim encoding koji bi podrzavao sve jezike...

naiso sam na funkcije tipa: http://www.php.net/manual/en/function.iconv.php
mada ne bih znao kako da ih iskoristim... u proba.php stavio sam utf8_encoding i to  mi je resilo problem prilikom upisa u xml i ne prijavljuje greske ali je to nije ni resilo problem jer i dalje postoji ne postoje slova van eng podrucja i citanje ne ide
Warning: DOMDocument::load() [domdocument.load]: Input is not proper UTF-8, indicate encoding ! Bytes: 0x9A 0x61 0x72 0x6B in
obiso sam forume i google svuda se javlja utv8_encodig i iconv ali ne bih znao da ih primenim pa ako moze mala pomoc...

Hvala unapred
« Poslednja izmena: 03.11.2013 15:39:39 Kaso »

Blokce

  • Novajlija
  • *
  • Poruke: 13
Odg: php xml utf8 encoding
« Odgovor #1 poslato: 06.11.2013 23:45:24 »
Ukoliko se neko bude namucio sa trazenjem ovog odgovora evo ja sam naso u mom slucaju:
proba.php:
Kod: PHP
  1.  $doc = new DOMDocument(); 
  2.   $doc->preserveWhiteSpace = false;
  3. $doc->formatOutput = true;
  4.   $doc->load("proba.xml");
  5.  
  6.   $root = $doc->documentElement;
  7.         $db_connect = mysql_connect($db_host, $db_user, $db_pass);
  8. 	    $db_select = mysql_select_db($db_name);
  9.         mysql_query("set names 'utf8'");
  10.         $filmovi=mysql_query("SELECT * FROM film ORDER BY film_id DESC LIMIT 0,100");
  11.         while($pod=mysql_fetch_array($filmovi))
  12.         {
  13.  
  14. $film = $doc->createElement('film');
  15. $film = $root->appendChild($film);
  16.  
  17. $link = $doc->createElement('link');
  18. $link = $film->appendChild($link);
  19. $dodajlink = $doc->createTextNode(''.seoURL($pod['film_ime']."_".$pod['film_imesrpski']).'-'.$pod['film_id']);
  20. $dodajlink = $link->appendChild($dodajlink);
  21.  
  22. $ime = $doc->createElement('ime');
  23. $ime = $film->appendChild($ime);
  24. $dodajime = $doc->createTextNode(mb_convert_encoding($pod['film_ime'].' '.$pod['film_imesrpski'].' '.$pod['film_imestrano'],"UTF-8","UTF-8"));
  25. $dodajime = $ime->appendChild($dodajime);
  26.  
  27. $poster = $doc->createElement('poster');
  28. $poster = $film->appendChild($poster);
  29. $dodajposter = $doc->createTextNode('poster/'.$pod['film_poster']);
  30. $dodajposter = $poster->appendChild($dodajposter);
  31.  
  32. $zvezde = $doc->createElement('zvezde');
  33. $zvezde = $film->appendChild($zvezde);
  34. $dodajzvezde = $doc->createTextNode(mb_convert_encoding($pod['film_zvezde'],"UTF-8","UTF-8"));
  35. $dodajzvezde = $zvezde->appendChild($dodajzvezde);
  36.  
  37.  
  38.  
  39. $doc->save("proba.xml"); }

i za livesearch.php:
Kod: PHP
  1. <?php
  2.  
  3. $xmlDoc=new DOMDocument();
  4. $xmlDoc->load("proba.xml");
  5.  
  6. $x=$xmlDoc->getElementsByTagName('film');
  7.  
  8. //get the q parameter from URL
  9. $q=mb_strtolower($_GET["q"]);
  10.  
  11. //lookup all links from the xml file if length of q>0
  12. if (strlen($q)>=1)
  13. {
  14. $hint="";
  15. $brojp=0;
  16. for($i=0; $i<($x->length); $i++)
  17.   {
  18.   $y=$x->item($i)->getElementsByTagName('ime');
  19.   $z=$x->item($i)->getElementsByTagName('link');
  20.   if ($y->item(0)->nodeType==1)
  21.     {
  22.     //find a link matching the search text
  23.     if (preg_match("/\b(".$q."\w*)\b/",$y->item(0)->childNodes->item(0)->nodeValue) && $brojp<15)
  24.       {
  25.       if ($hint=="")
  26.         { $brojp++;
  27.         $hint="<a href='".$z->item(0)->childNodes->item(0)->nodeValue . 
  28.         "' target='_blank'>" . 
  29.         $y->item(0)->childNodes->item(0)->nodeValue . "</a>";
  30.         }
  31.       else
  32.         { $brojp++;
  33.         $hint=$hint . "<br /><a href='".$z->item(0)->childNodes->item(0)->nodeValue . 
  34.         "' target='_blank'>" . 
  35.         $y->item(0)->childNodes->item(0)->nodeValue . "</a>";
  36.         }
  37.         if($brojp==15) $hint=$hint."<br />-><a href='pretraga.php?head=".$q."'>Pogledaj ceo spisak...</a>";
  38.       }
  39.     }
  40.   }
  41. }
  42.  
  43. // Set output to "no suggestion" if no hint were found
  44. // or to the correct values
  45. if ($hint=="")
  46.   {
  47.   $response="Nema slicnih filmova";
  48.   }
  49. else
  50.   {
  51.   $response=$hint;
  52.   }
  53.  
  54. //output the response
  55. echo $response;
  56. ?>
  57.  
« Poslednja izmena: 07.11.2013 08:07:58 Kaso »