Karakter kódolás kiolvasása Meta tagból
Sziasztok!
Különböző kódolású weboldalakat indexelek és a meta adatait mentem.
Ezt használom ehhez: http://php.net/manual/en/function.get-meta-tags.php
Az <meta name="author" content="name">
<meta name="keywords" content="php documentation">
<meta name="DESCRIPTION" content="a php manual">
stb adatokat szépen kiolvassa, de a különböző kódolású weboldalak miatt az elmentésnél gondjaim vannak.
Tudom, hogy ezen az oldalon mutatnak példát arra is, hogy a Meta adatokból, hogyan lehet kiolvasni a karakter kódolást
(<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />)
de nekem az már kínai és nem tudtam vele mit kezdeni.
Valaki leegyszerűsítené nekem, hogy hogyan tudom kinyerni egyszerűen, hogy egy weboldal utf-8, iso-8859-2, iso-8859-1, stb.. kódolású-e, hogy azután az infókat ez alapján átalakíthassam és úgy menthessem el?
Köszönöm.
■ Különböző kódolású weboldalakat indexelek és a meta adatait mentem.
Ezt használom ehhez: http://php.net/manual/en/function.get-meta-tags.php
Az <meta name="author" content="name">
<meta name="keywords" content="php documentation">
<meta name="DESCRIPTION" content="a php manual">
stb adatokat szépen kiolvassa, de a különböző kódolású weboldalak miatt az elmentésnél gondjaim vannak.
Tudom, hogy ezen az oldalon mutatnak példát arra is, hogy a Meta adatokból, hogyan lehet kiolvasni a karakter kódolást
(<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />)
de nekem az már kínai és nem tudtam vele mit kezdeni.
Valaki leegyszerűsítené nekem, hogy hogyan tudom kinyerni egyszerűen, hogy egy weboldal utf-8, iso-8859-2, iso-8859-1, stb.. kódolású-e, hogy azután az infókat ez alapján átalakíthassam és úgy menthessem el?
Köszönöm.
get_headers()
(ahogy nézem a get_meta_tags() nem adja vissza a charset-et, mert annak a meta tagnak nincs name tulajdonsága. De egyébként is header-ből célszerűbb ezt olvasni, mert a header nagyobb prioritással határozza meg az oldal kódolását, mint a meta tag.)
nincs
A meta-ból nem lehetne ezt kinyerni?
A meta-ból nem lehetne ezt
Az általad említett PHP dokumentáció lapon a hozzászólások között például van egy reguláris kifejezés alapú megoldás, amely csak akkor működik ha
- a http-equiv vagy meta attribútum előbbre van mint a content attribútum
- az attribútumok értékei idézőjelek közt vannak
Természetesen ha mások által írt HTML-t elemezgetsz, akkor a fenti követelményeket nehéz betartani. Főleg ha figyelembe vesszük a HTML5 szintaxisát, ahol a charset-nek sajátos szintaxisa van. Ezen felül még vannak a szintaktikai okádékok amelyek csak halványan hasonlítanak a szabványokra.Javaslom, hogy próbálj ki inkább egy HTML parse-oló rutinkönyvtárat, például PHP Simple HTML DOM Parser.
mb_check_encoding($string, 'UTF-8');
Vagy a htmlből nyered ki (regexp-el, vagy valamilyen DOM osztállyal) a charset-es meta tag értékét.