[ 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 | 36
Bydlisko: 127.0.0.1
NapísalOffline : 27.02.2008 18:07 | Str_Replace a velke / male pismena

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ý: 19.10.14
Príspevky: 539
Témy: 62 | 62
Bydlisko: 127.0.0.1 (...
NapísalOffline : 27.02.2008 18:27 | Str_Replace a velke / male pismena

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: 241
Témy: 26 | 26
NapísalOffline : 27.02.2008 21:18 | Str_Replace a velke / male pismena

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 | 36
Bydlisko: 127.0.0.1
Napísal autor témyOffline : 28.02.2008 9:48 | Str_Replace a velke / male pismena

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: 3991
Témy: 96 | 96
NapísalOffline : 28.02.2008 20:56 | Str_Replace a velke / male pismena

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ý: 05.12.17
Príspevky: 919
Témy: 259 | 259
Bydlisko: Levice
NapísalOffline : 29.02.2008 6:40 | Str_Replace a velke / male pismena

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: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 29.02.2008 7:57 | Str_Replace a velke / male pismena

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


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

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

Registrovaný: 07.08.06
Prihlásený: 05.12.17
Príspevky: 919
Témy: 259 | 259
Bydlisko: Levice
NapísalOffline : 29.02.2008 10:21 | Str_Replace a velke / male pismena

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: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 29.02.2008 10:46 | Str_Replace a velke / male pismena

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.


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

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

Registrovaný: 07.08.06
Prihlásený: 05.12.17
Príspevky: 919
Témy: 259 | 259
Bydlisko: Levice
NapísalOffline : 29.02.2008 11:27 | Str_Replace a velke / male pismena

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: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 29.02.2008 11:34 | Str_Replace a velke / male pismena

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


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

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

Registrovaný: 07.08.06
Prihlásený: 05.12.17
Príspevky: 919
Témy: 259 | 259
Bydlisko: Levice
NapísalOffline : 29.02.2008 11:56 | Str_Replace a velke / male pismena

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: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 29.02.2008 12:43 | Str_Replace a velke / male pismena

asi si nepochopil, co som pisal... ty na zaklade vyhladavaneho retazca generujes ten regexp...


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

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

Registrovaný: 07.08.06
Prihlásený: 05.12.17
Príspevky: 919
Témy: 259 | 259
Bydlisko: Levice
NapísalOffline : 29.02.2008 13:40 | Str_Replace a velke / male pismena

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: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 29.02.2008 13:49 | Str_Replace a velke / male pismena

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?


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

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

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3991
Témy: 96 | 96
NapísalOffline : 29.02.2008 14:35 | Str_Replace a velke / male pismena

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ý: 05.12.17
Príspevky: 919
Témy: 259 | 259
Bydlisko: Levice
NapísalOffline : 29.02.2008 18:48 | Str_Replace a velke / male pismena

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: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 29.02.2008 19:45 | Str_Replace a velke / male pismena

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


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

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

Registrovaný: 07.08.06
Prihlásený: 05.12.17
Príspevky: 919
Témy: 259 | 259
Bydlisko: Levice
NapísalOffline : 29.02.2008 22:39 | Str_Replace a velke / male pismena

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: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 01.03.2008 7:54 | Str_Replace a velke / male pismena

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


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
 [ Príspevkov: 20 ] 


Str_Replace a velke / male pismena



Podobné témy

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

pomocou reg. vyrazu - male pismena

v PHP, ASP

24

718

14.08.2008 1:03

chrono

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

zmena velkych na male pismena

v Ostatné programy

1

139

26.03.2016 15:05

michalesku

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

758

30.12.2010 22:09

coldak

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

hladanie v databaze - male, velke znaky

v PHP, ASP

15

617

03.02.2008 13:20

neopagan

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

str_replace

v PHP, ASP

5

242

11.12.2010 14:07

Ďuri

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

str_replace vinimky

v PHP, ASP

2

377

01.12.2008 20:45

kajbo

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

LIMIT pew str_replace();

v PHP, ASP

7

372

10.12.2007 20:42

tatysp

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

UTF-8 v str_replace/strtr

v PHP, ASP

3

115

09.04.2014 22:21

Kraliček

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

610

30.12.2010 10:37

blazej44800

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

Nefunkcne pismena

v Externé zariadenia

0

155

06.12.2011 14:56

F1L1P

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

Zmena písmena particie

v Pevné disky a radiče

6

701

26.11.2009 23:24

Milanese

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

Blbnú písmená a diakritika

v Ostatné programy

1

191

26.03.2012 13:00

michael89

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

Roztriedenie slova na písmená.

v PHP, ASP

14

163

04.03.2013 18:12

walther

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

slovenské písmena C++ SDL

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

9

194

25.02.2013 19:09

ball8

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

Facebook a chybajuce pismena

v Sociálne siete

2

137

06.07.2015 22:25

ac.milan

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

rozmazane pismena na LCD

v Monitory, televízory a projektory

7

758

18.07.2011 1:50

OmeGa



© 2005 - 2017 PCforum, edited by JanoF