Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa multi replace

[es] :: PHP :: Problem sa multi replace

[ Pregleda: 836 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

pakito
Paun Es Durlic
kustos etnolog (u penziji!) i programer
naivac
Majdanpek * Pančevo

Član broj: 91953
Poruke: 273
93.87.220.*

Sajt: www.PaunDurlic.com


+3 Profil

icon Problem sa multi replace04.10.2021. u 11:15 - pre 31 meseci
Akcentovano mesto u rečima u tekstu rečnika, vršim tako što akcentovan vokal boldiram.

primer:
$nadji = "lukra";
$zamenisa = "l<b>u</b>kra";
Problem nastaje kod dužih reči koje imaju istu osnovu, ali im je akcenat na drugom vokalu, primer:
$nadji = "lukratuare";
akcenat je na drugom "a": "lukratu<b>a<b/>re";
Ako odradim oba primera, dobijam reč tipa "lukratuare" sa dva akcenta!
A reči imam preko 100 000!

Pitanje, kako da prepravim ovaj primer da mi se to ne događa, to jest da mi '$nadji' nadje tačno string koji sam zadao, a ne duži od njega:

Code:
$unos="UPDATE `$tabela` SET `$polje` = replace(`$polje`,'$nadji', '$zamenisa')";

 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Problem sa multi replace04.10.2021. u 11:59 - pre 31 meseci
Uh, ovo je tako loše...

Prvo, pitanje nije za PHP nego za (pretpostavljam) MySQL bazu.
Drugo, ne znaš SQL, zašto replace, kada zamebjuješ CELU reč drugim stringom?

$unos="UPDATE `$tabela` SET `$polje` = '$zamenisa' WHERE `$polje` = '$nadji'";

Uz pretpostavku da je polje indeksirano, gornji upit je 100.000 puta brži.

Treće: čestitam! Uspeo si da isprogramiraš SQL Injections!
 
Odgovor na temu

pakito
Paun Es Durlic
kustos etnolog (u penziji!) i programer
naivac
Majdanpek * Pančevo

Član broj: 91953
Poruke: 273
93.87.220.*

Sajt: www.PaunDurlic.com


+3 Profil

icon Re: Problem sa multi replace04.10.2021. u 12:19 - pre 31 meseci
Nisam siguran da ste najbolje rezumeli problem.
$polje u $tabeli nema samo jedan string, nego je u pitanju tekst u kome se, preko primera, definiše i objašnjava osnovna reč u rečniku.
To dalje znači da se NE ZAMENJUJE ceo sadržaj $polje, nego samo jedna, tačno određena reč u njemu ...
Drugo, nisam ja smislio ovaj način višestruke zamene, nego sam ga preuzeo iz stručne literature.
Pema tome, čestitke zaslužuju neki drugi ... :)
Treće. Isprobao sam vaš primer: ne deluje ni na jednu reč, ni na onu koja se potpuno poklapa sa $nadji, ni na druge koje su duže ...


 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Problem sa multi replace04.10.2021. u 13:12 - pre 31 meseci
Ovo me stvarno demorališe.
Imaš 100.000 reči i želiš na 100.000 mesta da proveriš da li se neka od 100.000 reči pojavljuje i onda uradiš neku zamenu. To znači 10 milijardi update komandi.
A, pri tome je upitno da li uopšte treba da radiš zamenu u bazi, ili samo prilikom ispisa na ekran.
Pri tom ne daješ iole kompletan primer o tome šta imaš i šta želiš da dobiješ.

Evo reši na glup način.
Kada dobiješ u nizu zamena od "l<b>u</b>kratu<b>a<b/>re", dodaj još jedno pravilo, da se "l<b>u</b>kratu<b>a<b/>re" zamenjuje sa "lukratu<b>a<b/>re"
 
Odgovor na temu

pakito
Paun Es Durlic
kustos etnolog (u penziji!) i programer
naivac
Majdanpek * Pančevo

Član broj: 91953
Poruke: 273
93.87.220.*

Sajt: www.PaunDurlic.com


+3 Profil

icon Re: Problem sa multi replace04.10.2021. u 14:40 - pre 31 meseci
Citat:
Evo reši na glup način.


To već radim, samo sa očekivao da neko na ES zna pametniji način!
 
Odgovor na temu

pakito
Paun Es Durlic
kustos etnolog (u penziji!) i programer
naivac
Majdanpek * Pančevo

Član broj: 91953
Poruke: 273
93.87.220.*

Sajt: www.PaunDurlic.com


+3 Profil

icon Re: Problem sa multi replace05.10.2021. u 17:28 - pre 31 meseci
Po svemu sudeći, rešenje je bilo više nego jednostavno, i glasi ovako:

Code:
$unos="UPDATE `$tabela` SET `$polje` = replace(`$polje`,' $nadji ', ' $zamenisa ')";


Stringovima se prosto doda po jedno prazno polje sa obe strane, pošto je u pitanju običan tekst u kome su reči tako i razdvojene. Treba samo imati u vidu da reč sa desne strane nema uvek prazno polje, već zarez, pa se lako daju isprogramirati zamene u "dva prolaza", prvim bez zareza, a drugi sa zarezom, pošto u tekstu rečnika nema drugih znakova interpunkcije!

Vidimo se na http://www.paundurlic.com/vlaski.recnik/index.php
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.astratelekom.rs.



+218 Profil

icon Re: Problem sa multi replace06.10.2021. u 14:13 - pre 31 meseci
Postoji i MySQL funkcija REGEXP_REPLACE
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Problem sa multi replace06.10.2021. u 14:26 - pre 31 meseci
Postoji, ali u verziji 8, u prethodnim verzijama MySQL-a nije postojala.
 
Odgovor na temu

[es] :: PHP :: Problem sa multi replace

[ Pregleda: 836 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.