NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Slovník sprostých slov

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
katrincsak
Člen
Avatar
katrincsak:19.6.2015 19:14

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
Odpovídá na katrincsak
Neaktivní uživatel:19.6.2015 19:18

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
19.6.2015 19:18
Neaktivní uživatelský účet
Avatar
katrincsak
Člen
Avatar
Odpovídá na Neaktivní uživatel
katrincsak:19.6.2015 19:37

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
Odpovídá na katrincsak
Matúš Petrofčík:19.6.2015 21:31

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
19.6.2015 21:31
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Matúš Petrofčík:19.6.2015 21:34
<?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
19.6.2015 21:34
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá na Matúš Petrofčík
Neaktivní uživatel:20.6.2015 10:16

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

Nahoru Odpovědět
20.6.2015 10:16
Neaktivní uživatelský účet
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Jan Lupčík:20.6.2015 11:02

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
TruckersMP vývojář
Avatar
katrincsak
Člen
Avatar
Odpovídá na Jan Lupčík
katrincsak:20.6.2015 13:57

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:20.6.2015 16:11

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 Jan Lupčík . 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 Jan Lupčík
katrincsak:20.6.2015 22:19

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
20.6.2015 22:19
Avatar
katrincsak
Člen
Avatar
katrincsak:20.6.2015 23:25

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
Odpovídá na katrincsak
Tomáš Maňhal:20.6.2015 23:35

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

 
Nahoru Odpovědět
20.6.2015 23:35
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na katrincsak
Jan Lupčík:21.6.2015 6:53

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
TruckersMP vývojář
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.