Problém s kódováním v komponentě
- Fyasko
- Člen | 106
Ahoj všem. Mám staženou fotbalovou tabulku ze stránky souteze.fotbal.cz pomocí Atrox\Matcher a nezobrazuje se mi správné kódování. Opět na localhostu mi to jde vpho ale jakmile to nahraju na hosting tak se to rozbije.
stahuju stylem
<?php
$html = file_get_contents($url->url_for_sync);
$l = \Atrox\Matcher::multi("//div[@class='col-100 col-s-75 m-b-20']/table",array(
[
'team1' => [
't' => "tr[1]/td[2]",
'z' => "tr[1]/td[@class='txt-c'][1]",
'v' => "tr[1]/td[@class='txt-c'][2]",
'vp' => "tr[1]/td[@class='txt-c'][7]",
'pp' => "tr[1]/td[@class='txt-c'][8]",
'p' => "tr[1]/td[@class='txt-c'][4]",
'sc' => "tr[1]/td[@class='txt-c'][5]",
'b' => "tr[1]/td[@class='txt-c'][6]",
],
...
]
?>
a výsledek na provozním serveru je
<?php
team1 => array (8)
t => "TJ Sokol \xc3\x83\xc2\x9adlice" (18)
team2 => array (8)
t => "SK \xc3\x84\xc2\x8cern\xc3\x84\xc2\x8dice" (17)
team3 => array (8)
t => "TJ Sokol Horn\xc3\x83\xc2\xad Ji\xc3\x85\xc2\x99et\xc3\x83\xc2\xadn" (31)
team4 => array (8)
t => "FK Slavoj Žatec" (18)
team5 => array (8)
t => "FK Klášterec n.O." (23)
team6 => array (8)
t => "TJ Krásný Dvůr/Kryry" (29)
?>
Nějaká rada kde dělám chybu? Předem díky :)
- Jan Tvrdík
- Nette guru | 2595
Většinou pomůže natvrdo (tj. třeba pomocí str_replace nebo reguláru)
přidat do toho $html
do hlavičky HTML 4 meta charset
deklaraci, tj.
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
- Fyasko
- Člen | 106
Vyzkouším. Každopádně kvůli ochraně stahuju hlavičku z cílového webu aby se operace zastavila když se nevrátí HTTP/1.1 200 OK. A hlavička html vrací
<?php
array (13)
0 => "HTTP/1.1 200 OK" (15)
1 => "Date: Tue, 13 Sep 2016 09:27:14 GMT" (35)
2 => "Server: Apache" (14)
3 => "X-Frame-Options: SAMEORIGIN" (27)
4 => "X-Powered-By: Nette Framework" (29)
5 => "Expires: Thu, 19 Nov 1981 08:52:00 GMT" (38)
6 => "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0" (77)
7 => "Pragma: no-cache" (16)
8 => "Vary: X-Requested-With,Accept-Encoding" (38)
9 => "Set-Cookie: nette-browser=o38f54463e; path=/; domain=fotbal.cz; httponly" (72)
10 => "Set-Cookie: PHPSESSID=1klv3a6svi46c7mfp53clbk561; expires=Tue, 27-Sep-2016 09:27:14 GMT; Max-Age=1209600; path=/; domain=fotbal.cz; HttpOnly" (140)
11 => "Connection: close" (17)
12 => "Content-Type: text/html; charset=utf-8" (38)
?>
Tak jsem myslel že by to kódování mělo být v pořádku.
- Fyasko
- Člen | 106
tohle je dump $html
<?php
"<!DOCTYPE html>
<html class="no-js">
<head>
<meta charset="utf-8">
<title>Ústecký kraj › 2016 A3C - I.B třída dospělých - sk. C | Soutěže | FOTB ... " (53156)
?>
Po nahrazení
<meta charset="utf-8">
na
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
funguje. Děkuju za radu :)
Editoval Fyasko (13. 9. 2016 11:48)