[ djordjevic_i @ 27.11.2011. 00:25 ] @
Pozdrav, preuzimam informacije o vremenu sa jednog sajta, DOM+XPath. To je OK, medjutim, na mom sajtu se ne prikazuju naša slova: č,ć,š,č,ž,đ. U čemu li je problem? Na bilo kom delu strane, osim u delu gde se prikazuju podaci o vremenu, prikaz slova funkcioniše-
[ Mr. Bond @ 27.11.2011. 00:45 ] @
Jesu slova sastavni deo toga što parsiraš? Na koji način vraćaš output parsiranog dela i ostatka sajta? Kroz jedan response ili vučeš AJAX-om?

U suštini svodi se na UTF-8 samo je pitanje zašto ga tu nema.
[ Goran Rakić @ 27.11.2011. 08:14 ] @
Ako tvoj i drugi sajt nisu u istom kodnom skupu, moraš da rekodiraš tekst u letu. Otvori tu drugu stranu i pogledaj koji je kodni skup, a onda iskoristi iconv() za rekodiranje. Pretpostavljajući da je tvoj sajt u UTF-8, a taj drugi u CP1250:
Code (php):
$string = iconv('CP1250', 'UTF-8//IGNORE', $string);
[ djordjevic_i @ 27.11.2011. 09:24 ] @
Code:

echo "<table class=weather_table ><tr>";
$dom = new DOMDocument();
@$dom->loadHTMLFile('http://www.aladin.info/vremens...RXX0032-%C4%8Ca%C4%8Dak-Srbija');
$xpath = new DOMXPath($dom);
$informacija= $xpath->query("//div[@class='span8 last']//li");
foreach($informacija as $info)
  echo '<td>'.$info->textContent.'</td></tr>';
  echo "</table>";

Ovaj deo koji mi odrađuje celokupan posao, da ne tupim. Kodni raspored je isti na oba sajta, utf-8. Na jednom računaru mi se vidi dobro, a na drugom ne, a u pitanju su 2 verzije Wamp servera, odnosno PHP 5.4 i PHP 5.3.5. Na računaru gde je verzija 5.3.5 se vidi ok, a na drugom ne :(


[Ovu poruku je menjao djordjevic_i dana 27.11.2011. u 10:35 GMT+1]
[ djordjevic_i @ 28.11.2011. 09:39 ] @
Da li neko ima bilo kakvu ideju?
[ Zlatni_bg @ 28.11.2011. 17:30 ] @
Prvo, nisi nam rekao da li si poslusao Gorana i isprobao njegovu ideju?

Drugo, sumnjas na to da je problem razlika u PHP verzijama. Ono sto svima uvek pricam je da idu logickim putem i tako resavaju probleme. Ok, PHP verzija 5.4 ne radi nesto sto radi PHP 5.3.5 verzija. Pogledajmo changelog PHP 5.4 verzije. Ono sto sam ja nasao je ovo:

Code:
Changed default value of "default_charset" php.ini option from ISO-8859-1 to
· UTF-8.


I jos dosta izmena sto se charseta tice. Pogledaj svoj php.ini i pogledaj da tamo nema nekih gresaka. Isto tako baci pogled i na changelog.
[ Nikola Poša @ 28.11.2011. 17:50 ] @
Da li u tom HTML-u kojeg fetch-uješ sigurno postoji head sekcija i onaj tag za definisanje charset-a u njoj?

Ako uopšte nema head sekcije, dodaj je:
Code:
$content = str_ireplace('<html>', '<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /></head>', $content );

A ako je ima, onda samo dodaj taj meta-tag:
Code:
$content = str_ireplace('</head>', '<meta http-equiv="content-type" content="text/html; charset=utf-8" /></head>', $content );

To naravno uradi pre nego što kreiraš DOMDocument instancu. Dakle prvo fetch-uj sadržaj te stranice, pa ga onda import-uj sa loadHTML().
[ djordjevic_i @ 28.11.2011. 19:24 ] @
Ej, pa napisah da je kodni skup isti na oba sajta.
Nikola, postoji head sekcija sa tagom za definisanje charset-a, pokusao sam to sto si mi rekao, ali ne vredi, opet dobijam isti rezultat.
[ Nikola Poša @ 28.11.2011. 20:55 ] @
A šta dobijaš u $dom->encoding nakon što učitaš taj HTML?

Meni je inače uvek za potrebe raznih web scraping-a koje sam radio prolazilo to postavljanje encoding-a preko meta tag-a. Probaj možda da u head sekciji ostaviš samo taj meta tag za charset, tako što ćeš npr. nekim regexp-om replace-ovati <head>.*</head>, sa <head><meta http-equiv="content-type" content="text/html; charset=utf-8" /></head>, pa onda takav string učitati u DOMDocument.

A ako ni to ne upali, probaj onda da ga zezneš sa ovim hack-om:
Code:
$doc = new DOMDocument();
$doc->loadHTML('<?xml encoding="UTF-8">' . $html);
$doc->removeChild($doc->firstChild); //uklanjanje XML_PI_NODE elementa
$doc->encoding = 'UTF-8';
[ djordjevic_i @ 28.11.2011. 21:32 ] @
U $dom->encoding dobijam utf-8. Isprobao sam, opet isto. Buni me to sto na drugom racunaru, vidim normalno sve karaktere, ali, nema veze.
[ Mr. Bond @ 28.11.2011. 21:37 ] @
Čudno al opet ... nije encoding nešto što se ponaša kako mu dune. Aj da probamo onda drugi pristup - koje su ti razlike između ta dva kompa? U smislu browser-a i OS-a? (mada je bitniji browser al otkud znam - da probamo).
[ djordjevic_i @ 28.11.2011. 22:32 ] @
Na identičnim browserima na oba računara, prikazuje se različito, odnosno ie, ff, chrome na jednom ne prepoznaju karaktere, a na drugom da. u lokalu, gde je verzija php-a 5.3.5 se vidi dobro, na istom računaru, prikaz sa weba ne prikazuje dobro. nikako mi ne ide u glavu, medjutim, ako preuzmem podatke sa neke druge lokacije, gde je isto postavljen kodni skup, prikazuje normalno slova.
samo on pravi problemaladin