Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Náš Lopuch Vám
vytře zrak

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub PHP [ŽP: neomezená] (kategorie Programování) moderuje makovec.
Archiv
Diskuse o vybornem skriptovacim jazyku php. Dulezite odkazy, pred polozenim dotazu zkuste hledat odpoved zde:
  1. www.php.net - domovská stránka PHP
  2. www.kosek.cz - spousta tutorialu pro PHP v češtině
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: caofpol
[ 1845 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
themajkl themajkl All those moments will be lost in time - like tears in rain. 4.10.2007 09:32  2112
huh [2111]: Multibyte substr i hledá?
huh huh 4.10.2007 09:06  2111
A co má podle vás dvou to mb_substr asi dělat?
themajkl themajkl All those moments will be lost in time - like tears in rain. 4.10.2007 08:50  2110
knedleHlavně si myslím, že na to musí už existovat nějaká funkce, na vyhledávání pozice substringu v utf.
knedle knedle online - Krabice živých 4.10.2007 08:36  2109
jeste zpet memu problemuzda se mi ze celej "muj" princip s vyhledanim pozice v ascii a oznacenim v neascii je spatne

ani po nasazeni mb_funkci sem se totiz nedostal na kyzeny stav...
... ono je to furt jasne proc - bo v ascii jsou znaky jednobajtove a v originale pak nektere viceznakove

jakym stylem by se to dalo vyresit? jak posunout ten princip?
me uz jen napada spocitat pocet diakritickych znaku v casti pred vyhledavanym substringem a pak timto o tento pocet zvysit zacatek - ale to je dost sileny
knedle knedle online - Krabice živých 3.10.2007 23:55  2108
je mi jasne ci to je - diky za nakopnuti s MB funkcemi
etdirloth EtDirloth 3.10.2007 23:45  2107
knedle [2104]: no to bude tym utf a diakritikou, takze musis pouzivat multibyte string functions, tzn. mb_* funkcie (mb_stripos, mb_strlen, mb_substr, ...)

v pripade, ze nemas pristup ku konfiguracii php a nemas k dispozicii mb_* funkcie, mozes si popri vyhladani slova nechat vratit zo sqlservra aj prislusnu dlzku
bredy 3.10.2007 23:45  2106
knedleProtoze ty najdes pozici v ascii, ale to neni ta sama pozice jako v UTF-8. V UTF-8 ma cesky znak dva bajty (a nektere znaky jinych narodnich abeced klidne i tri nebo ctyry). Musis k vyriznuti nalezeneho retezce pouzit mb_funkce, ktere pracuji spravne vicebajtovymi znaky.
knedle knedle online - Krabice živých 3.10.2007 23:43  2105
v realu je to napr>
vyhledavano "stal"
orig: Kašpárek stále aktuální
ascii: Kasparek stale aktualni

vraceny vysledek: Kašpárek stále aktuální

potazmo mi to deformuje text, pokud na zacatku nebo na konci nahrazeneho textu mam znaky s diakritikou:
iš��álový palác - na konci
Poz��stalí po Amorovi
knedle knedle online - Krabice živých 3.10.2007 23:36  2104
dotaz na principmam vyhledavani v db, kodovani UTF

vyhledavam retezec jak v orig nazvu, tak v ascii nazvu (bo sem ten co nepise furt s diakritikou)

vyhledani neni problem,
zadavam do vyhledavani "kun"
a dastavam zpet dve hodnoty jednoho zaznamu:
orig: "Žluťoučký kůň"
a ascii "Zlutoucky kun"

v originalnum nazvu chci zvyraznit vyhledavany retezec - coz mi ale nejde:
aktualne mam neco takoveho:
  if (is_array($kde)) {
    $kde_hlavni = $kde[0];
    $kde = $kde_ascii = $kde[1];
  }
  $zacatek = stripos($kde, $co);
  if ($zacatek === false) {
    // nic
  }
  else {
    //$konec = $zacatek + strlen($co);
    if (!empty($kde_hlavni)) {
      $kde = $kde_hlavni;
    }
    $nalezeny_string = substr($kde, $zacatek, strlen($co));
    $kde = str_replace($nalezeny_string, '<span class="b">'.$nalezeny_string.'</span>', $kde);
  }
  return $kde;

coz funguje jen za predpokladu, ze se v originale nevyskytuje pred vyhledavanou hodnotou zadny znak s diakritikou (mozna neplati pro uplne vsechny) - ale pokud tam mam nejaky, je $zacatek spocitan spatne (brzo) a tak se mi oznaci blba cast retezce

muzete me nekdo nakopnout?
kdokoliv Kdokoliv Nevidím důvod dělat cokoliv bezdůvodně. - http://kkl2401.wz.cz 29.9.2007 19:01  2103
No, ja mezitim zjistil, ze to tak jednoduchy nebude, protoze (aspon podle toho, co jsem nasel) treba IE vubec neposila, ze akceptuje text/html, jenom na zaver posle, ze akceptuje */*. Coz znamena, ze to budu muset resit nikoliv preferencema mime typu, ale browser sniffingem, coz mi prijde podstatne mene elegantni, ale zase snazsi na nakonfigurovani, protoze na tohle se ukazky po webu vali, takze by to melo bejt v pohode.
mach 29.9.2007 17:02  2102
Kdokoliv: No, tech moznosti pro mod_rewrite je opravdu tuna:

http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html

A rychly vyhledani "accept" a "mime" napovida, ze to fakt pujde. Nikdy sem to ale nedelal. Tipoval bych, ze to pujde napsat na par radku, ale alespon mne by trvalo desne dlouho to odladit.
kdokoliv Kdokoliv Nevidím důvod dělat cokoliv bezdůvodně. - http://kkl2401.wz.cz 29.9.2007 16:37  2101
mach: Aha, no pokud by to cele slo resit jenom konfiguraci Apache bez zasahu PHP, tak tim jenom lepe. Ja bohuzel nikdy Apache nekonfiguroval, takze neznam jeho moznosti.
mach 29.9.2007 15:31  2100
Ja mod_rewrite resim vzdycky takhle:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?web=$1 [L,QSA]

Kdyz se zada neexistujici adresa, preda se to tomu index.php, je to IMHO vcelku standardni postup. V tomhle pripade by se asi udelalo neco nasledujiciho:

RewriteEngine on
RewriteRule ^(.*)\.xhtml$ ./index.php?web=$1 [L,QSA]

V php souboru pak precist promennou web a vratit odpovidajici obsah.

V mod_rewrite to urcite jde udelat cele, tj. naprosto bez pouziti php, protoze mod_rewrite je dost sofistikovany, ale asi bych se o to moc nepokousel. Clovek treba zjisti, ze misto precteni akceptovanych mime typu chce provest jeste neco jinyho (logovani, kompresi, cachovani, …) a na to uz to php mozna bude potrebovat.
etdirloth EtDirloth 29.9.2007 14:03  2099
Kdokoliv [2098]: kolega prednedavnom robil modul, ktory robi nieco podobne ako mod. rewrite, ibaze pravidla ma ulozene v DB...
no a riesil to tak, ze kazdu url presmeroval v rewrite na nejaky index.php a tento potom linkoval prislusne *.php podla danych pravidiel -> takze ano, ide to
kdokoliv Kdokoliv Nevidím důvod dělat cokoliv bezdůvodně. - http://kkl2401.wz.cz 29.9.2007 08:51  2098
DotazSlo by v kombinaci s konfiguraci Apache v .htaccess v PHP provest neco zhruba nasledujiciho? Budu mit sadu statickych XHTML dokumentu, ktere budou navzajem prolinkovane (cili to vsechno v pohode bude fungovat i na lokalnim disku bez webserveru). Nicmene nahrane na webserveru bych chtel, aby to fungovalo tak, ze pres nejaka ta urlrewrite pravidla by *.xhtml bylo presmerovano na index.php, ktery by udelal dve veci - podival se na HTTP hlavicky prisle od klienta, prozkoumal, jake mime-types klient podporuje, nacetl by prislusny XHTML dokument, o ktery si klient rekl, a vratil jej budto jako application/xhtml+xml, nebo (v pripade IE a jinych obskurnosti) jako text/html.
Predpokladam, ze to resitelne je (a ani slozite), ale jistej si nejsem, s Apachem jsem si nikdy nehral a s PHP vlastne jenom malo. A jeste druha vec - pokud by to nejak slo, kdybych mel nejakou slozitejsi adresarovou strukturu, musim mit .htaccess s patricnymi pravidly v kazdem podadresari, nebo se da Apachovi nejak naznacit, ze neco plati i na vsechny podadresare?

[ 1845 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt