| Autor | Zpráva | ||
|---|---|---|---|
| MartinXYZ Profil * |
#1 · Zasláno: 2. 5. 2014, 17:13:56
Ahoj,
prosím o pomoc, celý den si s tím lámu hlavu, ale nedaří se mi... Nastíním jednoduchý příklad: <?php
$title = file_get_contents("http://www.adresa.cz");
preg_match('~<title>(.+)</title>~Usi', $title, $title_out);
$nazev = $title_out[1];
echo $nazev;
?>Skript vytáhne ze zadané adresy její název (to, co je mezi tagy TITLE). Stránku se skriptem mám kodovanou v UTF-8. Pokud tahám název ze stránek, které mají charset nastavený na UTF-8, není problém. Ale pokud tahám název ze stránky, která má charset např. windows-1250, zobrazí se mi místo znamének s diakritikou pouze nesmysly... Zkoušel jsem všechno možné, prohledal internet a nic. Zkoušel jsem i toto, ale bez úspěchu: ... echo mb_convert_encoding($nazev, "UTF-8"); Věděl by prosím někdo, jak na to? :-) Děkuji moc, Martin |
||
| Alphard Profil |
#2 · Zasláno: 2. 5. 2014, 17:57:42
A jaké je původní kódování? Možná ho zkusit explicitně nastavit.
Zkuste to prohnat zde uvedenou funkcí autoUTF(). |
||
| MartinXYZ Profil * |
#3 · Zasláno: 2. 5. 2014, 18:12:02
Moje stranka se skriptem ma kodovani UTF-8. Stranky, ze kterych ziskavam nazvy, maji pokazde jine kodovani (UTF-8, windows-1250, ...).
Kdyz ziskavam nazev ze stranek, ktere maji jine nez UTF-8 kodovani, vvznikne problem se zobrazenim znaku... |
||
| Alphard Profil |
#4 · Zasláno: 2. 5. 2014, 18:34:22
Proto jsem navrhoval zkusit to autoUTF().
|
||
| MartinXYZ Profil * |
#5 · Zasláno: 2. 5. 2014, 18:42:30 · Upravil/a: MartinXYZ
Ok, děkuju, snad to pomůže :-).
Ale mohl bys mi, prosím, lehce nastínit, jak mám tu funkci dostat do svého kódu? S PHP teprve začínám a opravdu si s tím nevím rady :-(. Zkusil jsem to nějak zbastlit. Je to takto správně? <?php
function autoUTF($s)
{
// detect UTF-8
if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s))
return $s;
// detect WINDOWS-1250
if (preg_match('#[\x7F-\x9F\xBC]#', $s))
return iconv('WINDOWS-1250', 'UTF-8', $s);
// assume ISO-8859-2
return iconv('ISO-8859-2', 'UTF-8', $s);
}
$title = file_get_contents("http://www.adresa.cz");
preg_match('~<title>(.+)</title>~Usi', $title, $title_out);
$nazev = $title_out[1];
echo autoUTF($nazev);
?> |
||
|
Časová prodleva: 12 let
|
|||
0