Autor Zpráva
Onecar
Profil
Zdravím, napsal jsem si takovou moc fajn funkci, která mi vypíše v atributu title opravdový titulek stránky. Problém je se špatným kódováním :-(. Zkusil jsem všechno, ale stále mi to nejde.


<?php


@header ('Content-Type: text/html; charset=windows-1250');

function anchor ($url, $name) {

$code = strtolower (file_get_contents ($url)); // stranka do stringu

if (strpos ($code, '<title>') == TRUE) { // pokud je titulek

$code = substr ($code, strpos ($code, '<title>')); // odmazu <title>
$code = substr ($code, 0, strpos ($code, '</title>')); // odmazu odpad
$code = substr ($code, 7); // odmazu </title>
$code = ucfirst ($code); // prvni pismeno velke

return '<a href="'.$url.'" title="'.$code.'">'.$name.'</a>'; // vracime HTML

}

else {

return '<a href="'.$url.'" title="'.$name.'">'.$name.'</a>'; // titulek neni, vracime HTML

}

}

echo anchor ('http://centrum.cz', 'Centrum.cz');

?>


Soubor je v kódování windows-1250. Při zmiňovaném centrum.cz se místo "Centrum.cz - Prověřeno více než 2,3 miliony uživatelů" objeví "Centrum.cz - provńŤňÖeno vŃşce neňż 2,3 miliony uňżivatelň¬". Budu moc rád za odpověď, dík :-).
Pavel Strejček
Profil
pomůže AutoCzech
smajli
Profil
Onecar
to péhápko je pěkné, ale nech si vyjet zdroják stránky a tam uvidíš v čem je problém
Pavel Strejček
Profil
smajli
problém je v rozdílném kódování toho načítaného titulku, který je asi v UTF-8, ale Onecar ho zobrazuje ve windows-1250. Takže se to musí překódovat třeba pomocí toho AutoCzechu, jenom je nutné si ho upravit do jiného kódování.
Pavel Strejček
Profil
Onecar
jinak ta fajnová funkce se dá ještě dost vylepšit, třeba několik řádků se dá nahradit jednou instrukcí

preg_match('~<title>(.+)</title>~Usi', $code, $match);

a titulek je uložen v $match[1]
Onecar
Profil
Pánové, moc děkuji za pomoc. Momentálně však řeším problém o to ožehavější, že mám na hostingu zakázáno používat URL jako argument fce file_get_contents();, a tato fce mi tedy nikdy nepojede. Mé snahy o nahrazení této fce použitím fsockopen(); však dosti pohořely, táži se proto na to, je-li nějaký způsob, jak udělat to samé, co udělá file_get_contents();, tedy přečíst nějakou stránku a vložit ji do proměnné.

Děkuji.
Pavel Strejček
Profil
Je pravda, že vědí proč to mají zakázané. Předpokládám, že bude zakázané u všech funkcí připojení přes http:. Ta funkce anchor se má vykonávat při každém načtení stránky? To by byla dost zbytečná zátěž. Domluvil bych se s webhosterem na povolení toho načítaní za určitých podmínek třeba s tím že se to bude spouštět jednou za čas CRONem nebo bude povolený přístup jen na určité adresy. Rozumný webhoster to povolí, jinak nezbývá než doporučit přesun jinam.
Toto téma je uzamčeno. Odpověď nelze zaslat.