Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 20 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Str_Replace a velke / male pismena

Registrovaný: 01.09.07
Prihlásený: 18.05.11
Príspevky: 141
Témy: 36
Bydlisko: 127.0.0.1
Príspevok NapísalOffline : 27.02.2008 18:07

Co mam urobit, aby mi funkcia str_replace() nerozlisovala velke a male pismena ?







_________________
It easier to run away
Offline

Užívateľ
Užívateľ
Str_Replace a velke / male pismena

Registrovaný: 29.12.05
Prihlásený: 14.08.18
Príspevky: 539
Témy: 62
Bydlisko: 127.0.0.1 (...
Príspevok NapísalOffline : 27.02.2008 18:27

od verzie php5 sa da pouzit funkcia str_ireplace







_________________
"Kde končí hiphop, začína IQ."
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.01.07
Prihlásený: 14.04.11
Príspevky: 239
Témy: 26
Príspevok NapísalOffline : 27.02.2008 21:18

jj aj v podobných funkciách str stačí doplniť len "i" napr. case-insensitive strstr() bude stristr()


Offline

Užívateľ
Užívateľ
Str_Replace a velke / male pismena

Registrovaný: 01.09.07
Prihlásený: 18.05.11
Príspevky: 141
Témy: 36
Bydlisko: 127.0.0.1
Príspevok Napísal autor témyOffline : 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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3984
Témy: 96
Príspevok NapísalOffline : 28.02.2008 20:56

tak to už cez regulárne výrazy


Offline

Užívateľ
Užívateľ
Str_Replace a velke / male pismena

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268
Bydlisko: Levice
Príspevok NapísalOffline : 29.02.2008 6:40

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!


Offline

Správca fóra
Správca fóra
Str_Replace a velke / male pismena

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 29.02.2008 7:57

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
Offline

Užívateľ
Užívateľ
Str_Replace a velke / male pismena

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268
Bydlisko: Levice
Príspevok NapísalOffline : 29.02.2008 10:21

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


Offline

Správca fóra
Správca fóra
Str_Replace a velke / male pismena

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 29.02.2008 10:46

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
Offline

Užívateľ
Užívateľ
Str_Replace a velke / male pismena

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268
Bydlisko: Levice
Príspevok NapísalOffline : 29.02.2008 11:27

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?


Offline

Správca fóra
Správca fóra
Str_Replace a velke / male pismena

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 29.02.2008 11:34

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
Offline

Užívateľ
Užívateľ
Str_Replace a velke / male pismena

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268
Bydlisko: Levice
Príspevok NapísalOffline : 29.02.2008 11:56

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?


Offline

Správca fóra
Správca fóra
Str_Replace a velke / male pismena

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 29.02.2008 12:43

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
Offline

Užívateľ
Užívateľ
Str_Replace a velke / male pismena

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268
Bydlisko: Levice
Príspevok NapísalOffline : 29.02.2008 13:40

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 ...


Offline

Správca fóra
Správca fóra
Str_Replace a velke / male pismena

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 29.02.2008 13:49

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3984
Témy: 96
Príspevok NapísalOffline : 29.02.2008 14:35

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ť


Offline

Užívateľ
Užívateľ
Str_Replace a velke / male pismena

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268
Bydlisko: Levice
Príspevok NapísalOffline : 29.02.2008 18:48

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 :(


Offline

Správca fóra
Správca fóra
Str_Replace a velke / male pismena

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 29.02.2008 19:45

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
Offline

Užívateľ
Užívateľ
Str_Replace a velke / male pismena

Registrovaný: 07.08.06
Prihlásený: 18.11.21
Príspevky: 947
Témy: 268
Bydlisko: Levice
Príspevok NapísalOffline : 29.02.2008 22:39

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 :)


Offline

Správca fóra
Správca fóra
Str_Replace a velke / male pismena

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 01.03.2008 7:54

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
Odpovedať na tému [ Príspevkov: 20 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. zmena velkych na male pismena

v Ostatné programy

1

376

26.03.2016 15:05

michalesku Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pomocou reg. vyrazu - male pismena

v PHP, ASP

24

974

14.08.2008 1:03

chrono Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. uuper - vyber z databazy a konvertovanie na velke pismena

v Databázy

14

1063

30.12.2010 22:09

coldak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. hladanie v databaze - male, velke znaky

v PHP, ASP

15

818

03.02.2008 13:20

neopagan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. str_replace

v PHP, ASP

5

479

11.12.2010 14:07

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. str_replace vinimky

v PHP, ASP

2

539

01.12.2008 20:45

kajbo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. LIMIT pew str_replace();

v PHP, ASP

7

568

10.12.2007 20:42

tatysp Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. UTF-8 v str_replace/strtr

v PHP, ASP

3

351

09.04.2014 22:21

Kraliček Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. str_replace - nahradenie nového riadku kódom <br>

v PHP, ASP

7

801

30.12.2010 10:37

blazej44800 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Nefunkcne pismena

v Externé zariadenia

0

317

06.12.2011 14:56

F1L1P Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zmena písmena particie

v Pevné disky a radiče

6

951

26.11.2009 23:24

Milanese Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. slovenské písmena C++ SDL

v Assembler, C, C++, Pascal, Java

9

461

25.02.2013 19:09

ball8 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. rozmazane pismena na LCD

v Monitory, televízory a projektory

7

1087

18.07.2011 1:50

OmeGa Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Facebook a chybajuce pismena

v Sociálne siete

2

345

06.07.2015 22:25

ac.milan Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Blbnú písmená a diakritika

v Ostatné programy

1

351

26.03.2012 13:00

michael89 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Roztriedenie slova na písmená.

v PHP, ASP

14

324

04.03.2013 18:12

walther Zobrazenie posledných príspevkov


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

Skočiť na:  
cron

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra