Jur4 Blog - Jiří Petřek alias Jur4 - webdesign, seo, programovaní, php, css, html

2007

V tomto roce nebyl žádný takový text napsán.

2006

únor (2) květen (1) srpen (1)

Archiv starších textů

V Archívu máš možnost shlédnout všechny texty rozdělené podle kategorií, a členěné podle roků a měsiců kdy byly napsány. Na úvodu vidíš texty tohoto měsíce. Výběr ostatních měsíců je vpravo.

PHP

Všechny texty o PHP, scriptech atd.

Vybrány texty, jejichž autorem je Jiří Petřek a patří do kategorie PHP.

18.srpen 2006

PHP: Synonyma a ohýbání - edit

Při programování (zvyšování efektivity) Keywords Generátoru mě napadla delikátní věc :-D, zařadit k němu i vyhladávání synonym a implementovat ohýbání slov. Jenže jak to udělat, žádný česlý free slovník podobného rázu podle pana Gůgla neexistuje a vyrabět vlastní by bylo nad mé češtinářské síly :-D. Ale když už jsem si to umanul, tak jsem to prostě musel mít. Nakonec mě trklo jak na to a musim říct nepotřeboval jsem k tomu žádne složité konstrukce. Stačilo trocha regulárních vyrázů, práce s polem, vyhledávač www.jyxo.cz a jsou z toho dvě celkem šikovné funkce :-).

Funkce už zase funguji chyba by měla být vyřešena. Jen chci upozornit na to, že synonyma a ohýbání slov by bylo dobré cachovat, jelikož při větším počtu slov je neunosne pokaždé ziskávat fraze.

Vyhledávání synonym

Nejprvé kód, vysvětlím zaokamžik.

function vratSynonyma($slovo, $cp)
{
$slovo = trim($slovo);
$cont = file_get_contents('http://jyxo.cz/s?q=' . urlencode(iconv($cp, 'UTF-8', $slovo)) . '&d=cz');
$cont = iconv('UTF-8', $cp, $cont);
$cont = strip_tags($cont, '<br>');
$reg = 'Synonyma'.$slovo.': (.+)(, \(vše\))?<br><br>';
preg_match_all("!$reg!", $cont, $arrSyn);
$arrSynonyma = explode(',', $arrSyn[1][0]);
$arrSynonyma = array_map('trim', $arrSynonyma);
if($arrSynonyma[count($arrSynonyma)-1]=="(vše)"){
 unset($arrSynonyma[count($arrSynonyma)-1]);
}
return $arrSynonyma;
}

Tato funkce pracuje na principu toho, že z www.jyxo.cz stáhné stránku s vyhledávaným slovem (když si v jyxu necháte cokoliv vyhledat, v pravém sloupci máte vyčet synonym a ohýbání slova). Jako vstupní hodnota je slovo, ke kterému hledáme synonyma a jako druhá hodnota je kodování vašeho scriptu. Vrací pole hodnot. Pomoci regulárního výrazu vyjmu jen potřebnou část, kterou pak rozdělím podle čárek. Za zmínku stojí funkce array_map, tato funkce aplikuje na všechny prvky pole uvedené v 2 parametru funkci uvedenou v parametru 1.

Pozn.: Zakomentovaný řadek odkomentujte v případě toho, že máte stránku v jiném kódování než UTF-8 a na místo požadovaného CP napište vaše kódování.

Ohýbání slov

function ohybejSlovo($slovo, $cp)
 {
  $slovo = trim($slovo);
  $cont = file_get_contents('http://jyxo.cz/s?q=' . urlencode(iconv($cp, 'UTF-8', $slovo)) . '&d=cz');
  $cont = iconv('UTF-8', $cp, $cont);
  $cont = strip_tags($cont);
  $reg = 'Ohýbání(.+): (.+)\. ';
  preg_match_all("!$reg!", $cont, $arrSyn);
  $arrSynonyma = explode(',', $arrSyn[2][0]);
  $arrSynonyma = array_map('trim', $arrSynonyma);
  return $arrSynonyma;
 }

Pro tuto funkci platí úplně to samé, co pro funkci první s tím rozdílem, že je jiný regulární výraz.

Funkce můžete vyzkoušet na adrese
http://scripty.jur4.net/synonyma-ohybani/.
Pokud chcete zadat vlastni slovo použijte adresu
http://scripty.jur4.net/synonyma-ohybani/?slovo=vaseslovo,
defaultně je nastaveno slovo lampa

P.S. Funkce nebudou fungovat bez přistupu k netu. Pak by pravděpodobně funkce file_get_contents vratila chybu.

Info:


Jiří Petřek - téma: PHP - komentáře (16)

Úvod | Archív | Vzkaz | Download | Hledání | Odkazy | Fotoblog | Portfolio
Běží na RS2 RC4 s formátovačem Texy! | Hosting station.cz
© Jiří Petřek | Pagerank | Prohlášení o přístupnosti | Statistika | ^ Nahoru