Autor | Zpráva | ||
---|---|---|---|
habendorf Profil |
#1 · Zasláno: 10. 9. 2005, 17:12:01
Na stránce (utf-8) mám vyhledávání přes google API, funguje bezvadně až na diakritiku.
Pokud zadám "reseni", najde všechny výskyty slova "řešení", což by zas tak moc nevadilo. http://www.brs.cz/hledej.php?q=reseni Pokud zadám "řešení", nenajde nic, což vadí dost. http://www.brs.cz/hledej.php?q=%C5%99e%C5%A1en%C3%AD Co s tím? Je možné to pro google nějak překódovat před odesláním? Nebo druhá možnost by byla, automaticky před odesláním odstranit diakritiku, tedy při "řešení" rovnou odeslat "reseni". Tohle je ta podstatná část kódu: $q = stripslashes ($HTTP_GET_VARS['q']); $handle = @fopen ("http://search.digitalpoint.com/?q=" . urlencode ($q) . "&key=" . urlencode ($key) . "&site=" . urlencode ($site) . "&start=" . min (990, $start) . "&spell=" . $spelling, "r"); Můžete prosím někdo poradit? |
||
habendorf Profil |
#2 · Zasláno: 10. 9. 2005, 17:35:41 · Upravil/a: habendorf
Aha, už jsem pokročil, jedna možnost je asi strtr().
$q = strtr($q, "ěšč....", "esc..."); Nešlo by to elegantněji? PS: tak $q = strtr($q, "ěščřžýáíé", "escrzyaie"); bohužel nejde, na "řešení" to vrací "eieerení" (???) |
||
Fred Profil |
#3 · Zasláno: 10. 9. 2005, 17:39:07
OT:tak tohle je bomba, vůbec jsem o tom do nahlédnutí k tobě neslyšel, super díky: text-overflow:ellipsis
To řešení jsem našel, musel by jsi to převést do unicode viz: http://www.brs.cz/hledej.php?q=%26%23345%3B%26%23101%3B%26%23353%3B%26 %23101%3B%26%23110%3B%26%23237%3B |
||
halogan Profil |
#4 · Zasláno: 10. 9. 2005, 17:39:35
Odstraneni diakritky:
http://halogan.xblog.cz/archiv/2005/08/php-prakticky-generovani-seo-ur i Naskytne se vsak jeden problem: nekdo hleda (nic me ted nenapada, placnu blbost) bůček a ono mu to najde i buček, búčék, ... |
||
Fred Profil |
Upřesním to ještě snad to fórum nerozbije, hledám tohle
řešení |
||
Fred Profil |
#6 · Zasláno: 10. 9. 2005, 17:41:05
Hm rozbilo, tak bez amp
|
||
habendorf Profil |
#7 · Zasláno: 10. 9. 2005, 17:48:41
Chlapi bezva, díky moc. Nemám bohužel už čas, vyzkouším zítra a dám vědět.
Fred: na to text-overflow:ellipsis bacha, je to IE only. |
||
Cenobit Profil |
#8 · Zasláno: 10. 9. 2005, 20:58:19 · Upravil/a: Cenobit
Hi
a muze se google API pouzivat na komercnich webech? Nejak jsem to z licencnich podminek nepochopil (halt pravnicina jeste anglicky))) |
||
habendorf Profil |
#9 · Zasláno: 11. 9. 2005, 15:19:08 · Upravil/a: habendorf
Tak jsem nakonec použil haloganovo řešení, i když sebou nese "bůčkový" problém. Ještě jsem ho doplnil o velká písmena.
Fred: tvoje řešení by se mi líbilo víc, ale nenašel jsem žádný spolehlivý a rozchoditelný způsob, jak udělat převod utf-8 -> unicode. na to text-overflow:ellipsis bacha, je to IE only. - teď koukám že to je přímo z kódu vidět, takže upozornění bylo zbytečné Díky všem. |
||
llook Profil |
#10 · Zasláno: 11. 9. 2005, 16:50:13 · Upravil/a: llook
Největší problém bude asi převést řetězec do UCS-2, jestli hosting podporuje iconv, tak bude fungovat tohle:
$str = iconv('utf-8', 'ucs-2', 'řešení'); |
||
habendorf Profil |
#11 · Zasláno: 11. 9. 2005, 17:21:45 · Upravil/a: habendorf
llook: Díky, bohužel asi nepodporuje. Dopadl jsem takhle:
Fatal error: Call to undefined function: iconv() Mám tam $str = iconv('utf-8', 'ucs-2', $q); , v q je hodnota z formuláře. |
||
Cenobit Profil |
#12 · Zasláno: 11. 9. 2005, 17:48:07
Hi
mozna je to tim, ze fce iconv je v PHP az od verze 4 a/nebo tim ze se musi nainstalovat. Vice na http://mirrors.inway.cz/manual/en/ref.iconv.php |
||
habendorf Profil |
#13 · Zasláno: 11. 9. 2005, 18:00:40
Cenobit: Na to už jsem koukal předtím. Ale na hostingu těžko něco nainstaluju.
|
||
llook Profil |
#14 · Zasláno: 11. 9. 2005, 18:22:01
Pokud není iconv, mbstring ani recode, pak nezbývá, než si napsat vlastní převaděč. Upravil jsem trochu funkci z toho článku o UTF-8 na Intervalu: http://interval.cz/clanek.asp?article=2940 (hlavně jsem to předělal pro PHP):
function convertFROMutf8($text) { |
||
llook Profil |
#15 · Zasláno: 11. 9. 2005, 18:24:22
Ten zmršenej znak na třetím řádku od konce je ampérsand a křížek, nějak to to fórum mrší:(
|
||
habendorf Profil |
#16 · Zasláno: 11. 9. 2005, 18:50:39 · Upravil/a: habendorf
llook: Super, díky, chodí bezvadně. Ale pořád to na "reseni" nachází i "řešení". Což ale možná není na škodu. Jen nedokážu posoudit, jestli je lepší použít tvoje, nebo haloganovo, hlavně co je rychlejší (ale tvoje je určitě univerzálnější).
|
||
habendorf Profil |
#17 · Zasláno: 11. 9. 2005, 18:58:48 · Upravil/a: habendorf
Ale pořád to na "reseni" nachází i "řešení".
Nebrat vážně, jsem magor. Vždyť to používá google! http://www.google.com/search?hl=cs&q=reseni&lr= :o)) |
||
Fred Profil |
#18 · Zasláno: 12. 9. 2005, 01:07:52
Díky moc taky jsem to použil, mám ještě poddotaz, dá se nějak ten výsledek ještě doupravit, aby v něm nebyly ampersandy? Testuju to tady http://xy.wz.cz/search-test/search.php?q=%C5%99e%C5%A1en%C3%AD&start=0 a když dám druhou stránku vybuchne to kvůli xhtml na odkazu http://www.jakpsatweb.cz/komentare/diskuse.php?id=090608&title=Prost%C 5%99edn%C3%AD%20velikost%20p%C3%ADsma%20pou%C5%BE%C3%ADv%C3%A1%2092%25 %20Explorer%C5%AF&backlink=http://www.jakpsatweb.cz/weblog/a/109998048 0-prostredni-velikost-pisma-pouziva-92-exploreru.html
|
||
habendorf Profil |
#19 · Zasláno: 12. 9. 2005, 12:04:48
Fred: No ruku na srdce, tohle je Yuhůův bordel v adresách, ne tvůj. Musel bys použít Str_Replace a měnit & na &-amp-;
Ale musel bys to ohlídat, aby když už by tam bylo původně &-amp-; tak aby fce Str_Replace už neproběhla. (samozřejmě pomlčky jen kvůli chování této diskuze) |
||
Fred Profil |
#20 · Zasláno: 12. 9. 2005, 12:08:03
Hm pravda, tak to by snad ve skutečném chodu neměl být problém, teda doufám :-) Dík.
|
||
llook Profil |
#21 · Zasláno: 12. 9. 2005, 12:12:17
Lepší než str_replace bude htmlspecialchars.
|
||
Časová prodleva: 1 rok
|
|||
Jirka46468 Profil * |
#22 · Zasláno: 16. 11. 2006, 17:43:49
Lidičky já to pořád nechápu a češtinu mi to nevrací správně. Vyšel jsem z příkladu vysvětleného na adrese http://www.fiftyfoureleven.com/weblog/web-development/programming-and- scripts/apis/google-search-api. Funguje mi to ale ještě bych do toho potřeboval hodit tu češtinu. Stránky ze kterých hledám jsou teď ve cp-1250 ale i když jsem je hodil do utf-8 tak to nechodí správně.
Pak ještě jedna maličkost, ve výsledcích se zobrazují html tagy, např. <b> nebo <a> tak jak jsou v prohledávaném textu. Bylo by fajn je buď odfiltrovat nebo je interpretovat ale ne zobrazit jako zdrojový kód :-) Doufám, že mi poradíte, je to prima funkce, kterou určitě nevyužiju jen já. Díky Jirka. |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0