| | |
| Stránka: 1 z 1
| [ Príspevkov: 20 ] | |
Autor | Správa |
---|
Registrovaný: 01.09.07 Prihlásený: 18.05.11 Príspevky: 141 Témy: 36 Bydlisko: 127.0.0.1 | Napísal tatysp: 27.02.2008 18:07 | |
|
Co mam urobit, aby mi funkcia str_replace() nerozlisovala velke a male pismena ?
_________________ It easier to run away |
|
Registrovaný: 29.12.05 Prihlásený: 14.08.18 Príspevky: 539 Témy: 62 Bydlisko: 127.0.0.1 (... | Napísal qacer: 27.02.2008 18:27 | |
|
od verzie php5 sa da pouzit funkcia str_ireplace
_________________ "Kde končí hiphop, začína IQ." |
|
Registrovaný: 23.01.07 Prihlásený: 14.04.11 Príspevky: 239 Témy: 26 |
jj aj v podobných funkciách str stačí doplniť len "i" napr. case-insensitive strstr() bude stristr()
|
|
Registrovaný: 01.09.07 Prihlásený: 18.05.11 Príspevky: 141 Témy: 36 Bydlisko: 127.0.0.1 | Napísal autor témy tatysp: 28.02.2008 9:48 | |
|
hmm funguje to, ale nie až tak, ako som chcel - mam zoznam užívateľov a davam tam filtráciu - užívateľ zadá napr "mi" a vráti mu z DB aj admin aj Michal: ak dam str_replace($name,"<b>$name$</b>",$result);, tak vráti admin a Michal, po použití str_ireplace vracia admin a michal, ale ja to chcem ponechať a pridať B tágy - admin a Michal
_________________ It easier to run away |
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
tak to už cez regulárne výrazy
|
|
Registrovaný: 07.08.06 Prihlásený: 18.11.21 Príspevky: 947 Témy: 268 Bydlisko: Levice |
No tento problem mam uz davnejsie aj ja, ale nikto mi nevedel dat uspokojivu odpoved. Potreboval by som to co pise taty_sp a este okrem toho aby pri vyhladavani nerozlisovalo diakritiku.
Takze zhrniem to:
ked hladam mi najde aj admin, aj Michal, ale oznaci tucnym aj admin, aj Michal,
ked hladam napr. slovo počítač, najde aj počítač, aj pocitac, alebo naopak ak hladam pocitac, najde aj počítač.
Chcel by som poprosit nejaku dobru dusu, co by to pomocou regularnych vyrazov napisal. Uz sa to tu niekedy riesilo, ale nebolo to doriesene. Bol by som velmi vdacny.
DAKUJEM!
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
Zvyraznenie casti slova:
Kód: $search = "mi"; $text = "milk mimimi Michal MISA";
echo eregi_replace($search, '<b>\\0</b>', $text);
Alebo ak chces nieco kompaktnejsie, tak si pozri http://aidanlister.com/repos/v/function.str_highlight.php
O tom vyhladavani som tu uz pisal, myslim, ze to aj korektne fungovalo, aj ked to nebolo mozno najlepsie riesenie, ale ine som zatial nenasiel...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 07.08.06 Prihlásený: 18.11.21 Príspevky: 947 Témy: 268 Bydlisko: Levice |
Ano stenley, uz sa to riesilo, ale zial, nie je mi to celkom jasne. Zo starsich diskusii vyberam: Niekto napisal toto: Kód: $dk1='ľščťžýáíé'//teda vsetky znaky s diakritikou $dk2='lsctzyaie'//teda rovnake znaky v rovnakom poradi $slovo_bez_dk=strtr($slovo, $dk1, $dk2); toto by malo odstranit diakritiku z hladaneho slova. Toto mi vsak nefunguje. Odstrani len dlzne, makcene na č,ť,... nie. Neviem preco. Potom si ty stenley napisal nieco taketo: Kód: $searchstring = "myška";
Regularny vyraz z hladaneho retazca:
$regexp = "[mM][yýYÝ][sšSŠ][kK][aáAÁ]";
Select:
SELECT * FROM tabulka WHERE text REGEXP '$regexp'
Retazec searchstring bude vlastne obsahovat hladany vyraz. Ako definujem tu premennu $regexp, ked neviem ake bude to hladane slovo? Mohol by si to trosku rozobrat podrobnejsie? Diky
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
Princip je nasledovny:
1. krok - odstranis diakritiku z hladaneho vyrazu tym prvym sposobom (autorom je tusim Drako)
2. krok - vytvoris si konverznu tabulku, pomocou ktorej pomenis vsetky pismenka (ak je to potrebne) na format regularneho vyrazu. Konverznu tabulku si mozes spravit ako len chces, napr. aj cez pole.
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 07.08.06 Prihlásený: 18.11.21 Príspevky: 947 Témy: 268 Bydlisko: Levice |
no, uz sa to pomaly rysuje...
Len ten Drakov sposob odstranenia diakritiky nefunguje na 100 percent. Odstrani len dlzne, ale makcene na č,ť, nie.
A potom $regexp = "[mM][yýYÝ][sšSŠ][kK][aáAÁ]..+ vsetky ostatne znaky v abecede ...";
SELECT * FROM tabulka WHERE text REGEXP '$regexp'
mohlo by to tak byt?
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
mne to odstranenie diakritiky funguje ako ma...
$regexp obsahuje len kombinacie znakov z konv. tabulky, ktore si ziskal nahradenim daneho znaku z hladaneho vyrazu, cize ziadne ine znaky z abecedy tam nemaju co hladat, ved ked chces najst "myška", nebudes pradsa vyhladavat "myškazostyrminohamiachvostom"
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 07.08.06 Prihlásený: 18.11.21 Príspevky: 947 Témy: 268 Bydlisko: Levice |
ano, to je jasne, ale kedze ja neviem co bude uzivatel hladat, neviem teda presne definovat $regexp, preto by som tam mal zahrnut vsetky moznosti, nie?
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
asi si nepochopil, co som pisal... ty na zaklade vyhladavaneho retazca generujes ten regexp...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 07.08.06 Prihlásený: 18.11.21 Príspevky: 947 Témy: 268 Bydlisko: Levice |
no sorry, nie som este v tejto problematike zbehly. Teraz uz teda vobec nechapem, ako vygenerujem ten regexp z neznameho retazca, ktory bude hladany?
budem mat retazec $searchstring, ktory neviem co obsahuje /uzivatel zadal/.
tak ako teraz generujem regexp? Vies mi to vysvetlit, lebo zda sa, ze som tu v tom uviazol ...
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
ale ved ja ta nekritizujem, len sa divim, na ake veci sa pytas (kedze si myslim, ze si v php ako-tak zbehly). Hladany retazec ziskas z formulara, cize ho poznas, tak v com je problem?
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
uplne jednoducho by s to dalo cez (neručím funkčnosť)
$meno="admin"
$a=split('', $meno);
$arr[1]=str_replace("m", "M", $arr[1]);
potom už len pospájať
|
|
Registrovaný: 07.08.06 Prihlásený: 18.11.21 Príspevky: 947 Témy: 268 Bydlisko: Levice |
stenley: jasne ze hladany vyraz ziskam z formulara. Ale ako vytvorim tu konverznu tabulku, alebo ten regexp, ked ja neviem vopred, co budu uzivatelia hladat?
Teraz to mam asi takto: uzivatel zada hladane slovo - $search. Potom to mam takto Kód: $hladat=mysql_query("SELECT * FROM $kategoria WHERE title like '%".$search."%' OR text like '%".$search."%'");
if(mysql_num_rows($hladat)>0) { while($zaz=mysql_fetch_row($hladat)) {
$zaz[8]=eregi_replace($search,'<strong>'.$search.'</strong>',$zaz[8]);
No a pred to by som mal dat to odstranenie diakritiky a nasledne vytvorit ten regularny vyraz, ktory netusim ako vytvorim
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
Rozhodol som sa napisat presne, ako by vysledny script mohol vypadat, aby si mal aku-taku predstavu o fungovani:
Kód: $search = "myš";
$dia = "áäčďéíľĺňóôŕšťúýÁČĎÉÍĽĹŇÓŠŤÚÝŽ"; $nodia = "aacdeillnoorstuyacdeillnostuyz";
$convtbl_search = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
$convtbl_replace = array('[aáäAÁ]', '[bB]', '[cčCČ]', '[dďDĎ]', '[eéEÉ]', '[fF]', '[gG]', '[hH]', '[iíIÍ]', '[jJ]', '[kK]', '[lľĺLĽĹ]', '[mM]', '[nN]', '[oóôOÓ]', '[pP]', '[qQ]', '[rŕRŔ]', '[sšSŠ]', '[tťTŤ]', '[uúUÚ]', '[vV]', '[wW]', '[xX]', '[yýYÝ]', '[zžZŽ]');
$search = strtr($search, $dia, $nodia); $regexp = str_replace($convtbl_search, $convtbl_replace, $search);
Dajme tomu, ze sa vyhladava retazec "myš." Pomocou strtr() sa z neho odstrani diakritika a nasledne cez str_replace() sa jednotlive pismena v tomto retazci bez diakritiky nahradia patricnym "regularnym" vyrazom z pola $convtbl_replace. Je to len priklad, ak to chces nasadit, musis este osetrit cislice alebo ine nealfanumericke znaky.
Dufam, ze uz je to aspon trocha jasne
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 07.08.06 Prihlásený: 18.11.21 Príspevky: 947 Témy: 268 Bydlisko: Levice |
Dakujem ti stenley za skvele objasnenie! No presne toto som sa predtym pytal, ci tam treba uviest vsetky abecedne znaky - Kód: $convtbl_replace = array('[aáäAÁ]', '[bB]', '[cčCČ]', '[dďDĎ]', '[eéEÉ]', '[fF]', '[gG]', '[hH]', '[iíIÍ]', '[jJ]', '[kK]', '[lľĺLĽĹ]', '[mM]', '[nN]', '[oóôOÓ]', '[pP]', '[qQ]', '[rŕRŔ]', '[sšSŠ]', '[tťTŤ]', '[uúUÚ]', '[vV]', '[wW]', '[xX]', '[yýYÝ]', '[zžZŽ]');
No dobre stenley, toto mi velmi pomohlo, budem sa s tym este hrat. Este raz ti mockrat dakujem! Si kral
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
Ty si sa pytal, ci mas v regexp uviest vsetky znaky a nie, ci ich ma konverzna tabulka obsahovat:
neopagan píše: A potom $regexp = "[mM][yýYÝ][sšSŠ][kK][aáAÁ]..+ vsetky ostatne znaky v abecede ...";
Ale to je jedno, hlavne, ze to pomohlo
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
| Stránka: 1 z 1
| [ Príspevkov: 20 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| zmena velkych na male pismena v Ostatné programy | 1 | 376 | 26.03.2016 15:05 michalesku | | pomocou reg. vyrazu - male pismena v PHP, ASP | 24 | 974 | 14.08.2008 1:03 chrono | | uuper - vyber z databazy a konvertovanie na velke pismena v Databázy | 14 | 1063 | 30.12.2010 22:09 coldak | | hladanie v databaze - male, velke znaky v PHP, ASP | 15 | 818 | 03.02.2008 13:20 neopagan | | str_replace v PHP, ASP | 5 | 479 | 11.12.2010 14:07 Ďuri | | str_replace vinimky v PHP, ASP | 2 | 539 | 01.12.2008 20:45 kajbo | | LIMIT pew str_replace(); v PHP, ASP | 7 | 568 | 10.12.2007 20:42 tatysp | | UTF-8 v str_replace/strtr v PHP, ASP | 3 | 351 | 09.04.2014 22:21 Kraliček | | str_replace - nahradenie nového riadku kódom <br> v PHP, ASP | 7 | 801 | 30.12.2010 10:37 blazej44800 | | Nefunkcne pismena v Externé zariadenia | 0 | 317 | 06.12.2011 14:56 F1L1P | | Zmena písmena particie v Pevné disky a radiče | 6 | 951 | 26.11.2009 23:24 Milanese | | slovenské písmena C++ SDL v Assembler, C, C++, Pascal, Java | 9 | 461 | 25.02.2013 19:09 ball8 | | rozmazane pismena na LCD v Monitory, televízory a projektory | 7 | 1087 | 18.07.2011 1:50 OmeGa | | Facebook a chybajuce pismena v Sociálne siete | 2 | 345 | 06.07.2015 22:25 ac.milan | | Blbnú písmená a diakritika v Ostatné programy | 1 | 351 | 26.03.2012 13:00 michael89 | | Roztriedenie slova na písmená. v PHP, ASP | 14 | 324 | 04.03.2013 18:12 walther |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|