Avatar
katrincsak
Člen
Avatar
katrincsak:

Zdravím,

pomocí funkce str_replace() nahrazuji všechna nevhodná slova která se nachází v textu. Každopádně to ignoruje velká písmena. Samozřejmě vím jak samotný řetězec převedu na velká, nebo opačně, ale to už nevrátím stejnou podobu. Jak mohu zahrnout velká i malá písmena do slovníku bez toho abych vypisoval tisíce kombinací? To už raději použiju strpos() který jen vrátí hodnotu a informuji o tom dotyčného... Ale rád bych to řešil náhradou, nebo odstraněním.. To je už stejný.

$slova = array(ZDE, JSOU, SLOVA, NEVHODNÁ);
                $this->slovnik = str_replace($slova, '..', $this->ochrana);
                return $this->slovnik;
 
Odpovědět 19.6.2015 19:14
Avatar
Fredep
Redaktor
Avatar
Odpovídá na katrincsak
Fredep:

Místo str_replace použij podobnou, vylepšenou funkci str_ireplace... ;)
Viz dokumentace http://php.net/…ireplace.php

Editováno 19.6.2015 19:19
Nahoru Odpovědět  +1 19.6.2015 19:18
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
katrincsak
Člen
Avatar
Odpovídá na Fredep
katrincsak:

Koukám do dokumentace, zkouším ale buď jsem to pochopil špatně, nebo dělám prostě něco špatně. Mohu požádat o ukázku s mim příkladem jak str_ireplace() funguje? Koukal jsem že v podstatě skoro stejně.

 
Nahoru Odpovědět 19.6.2015 19:37
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na katrincsak
Matúš Petrofčík:

Tak ako sa píše v dokumentácii:

mixed str_ireplace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

Funkcia str_ireplace má ako prvý parameter že čo má hľadať (jedno slovo, alebo pole slov), druhý parameter je náhrada za to čo hľadáme (jedno slovo, alebo aj pole slov, vtedy musí byť aj prvý parameter pole a tuším nejako spolu súvisia), a ako tretí parameter je premenná v ktorej hľadáme a nahradzujeme. Po prebehnutí vráti vásledok.

Funkcia str_ireplace sa od str_replace líši v tom, že hľadá slová nezávislo na veľkosti písmen. Napr: a v prehľadavanom reťazci hľadané slovo pes označí za výsledky aj slová pes, Pes, PEs, PES, pEs... zatiaľ čo str_replace by našla len pes

Nahoru Odpovědět  +2 19.6.2015 21:31
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Matúš Petrofčík:
<?php

$povodnyText = "Funkcia str_ireplace má ako prvý parameter že čo má hľadať (jedno slovo, alebo pole slov), druhý parameter je náhrada za to čo hľadáme (jedno slovo"; // bla bla bla

$zleSlova = array("nadavka", "urazka", "blud"); // atd

$nahradaZaZleSlova = "...";

$vyslednyText = str_ireplace($zleSlova, $nahradaZaZleSlova, $povodnyText);
Nahoru Odpovědět  +1 19.6.2015 21:34
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Fredep
Redaktor
Avatar
Odpovídá na Matúš Petrofčík
Fredep:

Problém je v tom, že nezvládá diakritiku, nedokáže převést č na Č...

Nahoru Odpovědět  +2 20.6.2015 10:16
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Fredep
IT Man:

Na to by mohl použít mb_str_replace(). Ale pokud chce funkci str_ireplace s UTF-8, může se podívat sem: http://stackoverflow.com/…str-ireplace

Nahoru Odpovědět 20.6.2015 11:02
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
katrincsak
Člen
Avatar
Odpovídá na IT Man
katrincsak:

Večer ozkouším a juknu se na to jakmile budu z práce doma ;-)

 
Nahoru Odpovědět 20.6.2015 13:57
Avatar
katrincsak
Člen
Avatar
Odpovídá na Matúš Petrofčík
katrincsak:

Teď jsem ve volné chvíli četl odpověď.. Tak jsem to pochopil správně, ale problém je v tom že většina sprostých slov má diakritiku :D Takže proto mi to nějak nešlo. Určitě zkusím co psal IT Man . Ještě jsem koukal na nějaké funkce převedení znakové sady když se jedná právě o UTF-8. Večer testnu a dám vědět. Nějaké řešení být určitě musí ;-)

 
Nahoru Odpovědět 20.6.2015 16:11
Avatar
katrincsak
Člen
Avatar
Odpovídá na IT Man
katrincsak:

Tu funkci si musím vytvořit? Já jen že neexistuje, ale našel jsem podobnou snad...
mb_ereg_replace
mb_eregi_replace

odkaz na neexistující: http://php.net/…l-lookup.php?…

Editováno 20.6.2015 22:19
 
Nahoru Odpovědět  ±0 20.6.2015 22:19
Avatar
katrincsak
Člen
Avatar
katrincsak:

A že by třeba ten někdo napsal proč mám mínus? Takhle se fakt poučím :-) ..

Věřím, že až případně příště napíšu nějakou asi stejnou botu, tak si dotyčný bude mnout ruce a zase dá mínus? A bude mít radost, že "možná" je chytřejší než ten na koho tajně poukazuje.. Rád bych zjistil co dělám špatně, však proto sem píšu, nebo to dotyčný nechápe? ... Tohle mě fakt dokáže naštvat a zvednout ze židle...

 
Nahoru Odpovědět 20.6.2015 23:25
Avatar
tomasmanhal
Člen
Avatar
Odpovídá na katrincsak
tomasmanhal:

Mínusy neřeš ;-) Jsou tu jedinci, kteří jen chodí a jen mínusují :-)

Nahoru Odpovědět  +7 20.6.2015 23:35
Kdyby nám dodali k životu zdrojový kód, vše by bylo jednodušší...
Avatar
IT Man
Redaktor
Avatar
Odpovídá na katrincsak
IT Man:

Pokud ti nejde mb_str_replace() (mně teda funguje), tady se zdá, že je hezky vytvořen. Nezkoušel jsem ho ale.
https://gist.github.com/…rphy/3098836

Každopádně pokud chceš i ty varianty s velký písmenky, zkus ten minulý odkaz a vytvořit si sám takovou metodu. :)

Akceptované řešení
+20 Zkušeností
Řešení problému
Nahoru Odpovědět 21.6.2015 6:53
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.