PHP Trik: návštěvníci z vyhledávačů
Chcete zvýšit komfort prohlížení vašich stránek? Významná část návštěvníků na váš web jistě přišla přes internetový vyhledávač. Můžete jim usnadnit nalezení těch pravých informací, které hledají, například zvýrazněním vyhledávané fráze na vašich stránkách.
V čem to spočívá?
Jedná se o php skript, který pomůže návštěvníkům rychleji nalézt v textu na vaši stránce hledaný výraz tím, že zvýrazní hledaná slova na stránce. Probereme si jednu z možností, jak na to.
Pokud návštěvník nezadá přímo ve webovém prohlížeči adresu vašich webových stránek, je v HTTP hlavičce referer uložena URL adresa, ze které přišel na aktuální stránku. Metoda následujícího skriptu toho využívá. Z adresy zjistíme, jestli uživatel přišel z internetového vyhledávače. Pokud ano, tak téměř každý vyhledávač má hledaná slova přímo v URL adrese. Tato slova jsou uložena v proměnné, která se liší podle typu vyhledávače. V mém příkladu je použito pole s různými písmeny, které používají velké vyhledávače. Jednotlivá slova nebo fráze jsou v této proměnné oddělena zpravidla znaménkem plus. Skript jednoduše přidá na začátek a konec každého hledaného slova v textu, který byl předtím například nahrán z MySQL databáze, html tagy font s nastaveným stylem, tak, aby měla slova odlišnou barvu pozadí.
Zdrojový kód :
<?php
$url_referer = $_SERVER['HTTP_REFERER'];
$vyhledavace = array('google.com','centrum.cz','seznam.cz');
// Zjistime nazev domeny odkud prichazi navastevnik
// Odstranime "www." a zkontroujem zda prisel z vyhledavace
$host = parse_url($url_referer);
$host = eregi_replace("www\.","",$host['host']);
foreach($vyhledavace as $server)
{
if($host == $server)
{
$promenne = array('q','qs','w');
$pozice = stripos($url_referer,"?");
// Odstranime domenu, a nechame si v promene "$text" jenom promene z URL adresy
$text = substr($url_referer,$pozice+1,strlen($url_referer));
// Rozdeli "$text" na pole s promenyma z URL adresy
$pole = explode("&",$text);
$pocet = count($pole);
if($pocet > 0)
{
$i = 0;
// Text, se kterym budeme pracovat. Muze to byt napriklad text z MySQL databaze.
text = "Krymah pesost zahrokrám ptástéš v hrazovpě Sémý a sabanou pisup ďamou
sodmifu Sudřouň bělapuř vivou vránnéčo k řuběp";
while($i < $pocet)
{
// Nyni pracujeme s jednotlivymi retezci ve formatu promena=hodnota
// Rozdelime proto retezec na dve hodnoty oddelene rovnitkem
// Nove pole "hodnoty" pak bude mit nasledujici strukturou "promena" => "hodnota promene"
$hodnoty = split('=', $pole[$i]);
foreach($promenne as $query_string)
{
// Pokud se promenna(query string) nachazi v poli s promennyma tak v nasem textu barevne zvyraznime podklad slov
if($query_string == $hodnoty[0])
{
$kontrola = strpos($hodnoty[1],"+");
// Pokud bylo v dotazu vice slov provede zvyrazneni slova pro kazde slovo zvlast
if(!$kontrola === false)
{
$slova = explode("+",$hodnoty[1]);
$pocet = count($slova);
$upraveny_text = $text;
for($i=0;$i <= $pocet;$i++)
{
$upraveny_text = str_replace($slova[$i],"<font style='color:#000000;background-color:#e2e2e2;'>".$slova[$i]."</font>",$upraveny_text);
}
echo $upraveny_text;
}
// Zvyrazneni v textu, pokud byl vyhledavan jeden vyraz
else
{
$upraveny_text = str_replace($hodnoty[1],"<font style='color:#000000;background-color:#e2e2e2;'>".$hodnoty[1]."</font>",$text);
echo $upraveny_text;
}
}
}
$i++;
}
}
}
}
?>
Pokud chcete přidat do skriptu podporu pro další vyhledávač, stačí připsat do pole „vyhledavace“ název serveru a doménu prvního řádu. Pokud server používá jiný název proměnné pro vyhledávání, pak přidejte do pole „promenne“ její název. Tabulka názvů proměnných u vybraných vyhledávačů:
| Vyhledávač | Proměnná |
| Google.com | q |
| Seznam.cz | w |
| Centrum.cz | q |
| Atlas.cz | q |
| Yahoo.com | p |
| Aol.com | query |
| Wikipedia.com | search |
| Jyxo.xz | q |
| Slunecnice.cz | qs |
Vylepšení skriptu
Vyhledávače většinou kódují písmena s diakritikou, proto je vhodné přidat do kódu jejich zpětné dekódování na normální znaky.
Vytvoříme si proto pole s názvem „znaky“ se strukturou „kódovaný znak“ ⇒ „dekódovaný znak“ a pomocí funkce strtr přeměníme zakódované znaky v hledaných slovech na písmena s diakritikou. Přeměnu provedeme jako na pole „hodnoty“:
<?php
$znaky = array("%EC" => "ě","%B9" => "š","%E8" => "č","%F8" => "ř","%BE" => "ž","%FD" => "ý");
$hodnoty[1] = strtr($hodnoty[1],$znaky);
?>
Řádek, kde se převádí znaky v poli „hodnoty“ umístíme nad řádek, ve kterém se přidávají tagy „font“. Tak i na pole slova
<?php
$slova[$i] = strtr($slova[$i],$znaky);
?>
Tento kód umístíme za řádek, na kterém se vytváří pole „slova“ pomocí funkce explode.
Anketa
Vítáte jako čtenář podobné obarvení textu dle vyhledávače?
Související odkazy
Workshop uživatelského testování použitelnosti

- Dokonalý web sám od sebe nikdo nevymyslí.
- Otestujte své řešení se skutečnými uživateli.
- Naučíme vás, jak testovat rychle, levně a efektivně.
- Během testování může moderátor udělat desítky chyb - vyvarujte se jich
Detailní informace o workshopu uživatelského testování »
Přehled názorů
Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.


