Sida 1 av 1
Byta teckenkodning i PHP [LÖST]
Postat: 28 sep 2009, 11:31
av ubot
Jag behöver byta teckenkodning på koden till webbsidorna som jag hämtar med file_get_contents. PHP skriptet kastar ut webbsidornas kod med html-tecken iställer för svenska tecken (å, ä, ö). Hur gör jag för att PHP skriptet ska kasta ut svenska tecken istället för deras motsvarighet som html-tecken?
Kod: Markera allt
function getTextBetweenTags($tag, $html)
{
$pattern = "/(<$tag?.*>(.*?)<\/$tag>|(.*?)<\/$tag>|<$tag?.*>(.*?))/";
preg_match_all($pattern, $html, $matches);
return $matches[1];
}
$html = file_get_contents($_ENV['var']);
$content = getTextBetweenTags('title', $html);
foreach( $content as $item )
{
echo $item;
}
Re: Byta teckenkodning i PHP
Postat: 28 sep 2009, 11:48
av Konservburk
Re: Byta teckenkodning i PHP
Postat: 28 sep 2009, 12:24
av ubot
Re: Byta teckenkodning i PHP [LÖST]
Postat: 28 sep 2009, 12:36
av ubot
Jösses. Det verkar som om det fungerar på vissa sidor att göra om teckenkodningen, men då sutar istället andra sidor att fungera. Suck. På vissa sidor fungerar svenska tecken bra i utf-8, medan andra sidor kräver att Terminalen visar i latin-1 eller vad det heter. Hur löser man det här problemet? Jag har alltså ett php-skript som visar svenska tecken rätt ibland, men inte alltid. Jag antar att det har att göra med teckenkodningen på sajten. Eftersom den verkar variera (eller något) så måste jag liksom anpassa konverteringen av teckenkodningen. Kör jag med utf-8 så visar Terminalen vissa resultat på rätt sätt, men inte andra och tvärtom med latin-1. Hur jag än vänder mig har jag rumpan bak, liksom.
Re: Byta teckenkodning i PHP [LÖST]
Postat: 28 sep 2009, 13:30
av ubot
Ok, med file -i filename så ser jag ut att få encoding typen på texten. Nu är det så att jag har texter som kommer från olika sidor på Nätet och därför behöver jag anpassa Terminalens visning av texten beroende på vilken encoding källan har. Hur gör jag så att Terminalen automatiskt väljer rätt encoding? Alltså, om file -i säger att det är en viss encoding, hur får jag Terminalen att byta över till samma encoding innan texten visas i Terminalen. Och går det att lita på att file -i visar rätt encoding i 99% av alla fall?