dodání ihned! nové
Pouze tento týden sleva až 80 % na e-learning týkající se PHP. Zároveň využij akce až 30 % zdarma při nákupu e-learningu. Více informací.
Hledáme programátora do rostoucího týmu ITnetwork.cz, 100% home office, 100% flexibilní pracovní doba. Více informací
discount week 30
Avatar
Tomáš Střecha
Překladatel
Avatar
Tomáš Střecha:20.3.2017 16:01

Ahoj,
mohl by mi prosím někdo vysvětlit jak funguje preg_replace()? Vím, co přesně má dělat, ale například nechápu proč se tam dávají lomítka, hranaté závorky a podobně. Příklad: "/\-{2,}/u" (Zdroj)
Děkuji.

 
Odpovědět
20.3.2017 16:01
Avatar
Michal
Člen
Avatar
Odpovídá na Tomáš Střecha
Michal:20.3.2017 16:36

Ahoj, kdežto funkce str_replace() nahradí jeden konkrétní text za jiný, funkce preg_replace() umožňuje používat tzv. regulární výrazy. To je zjednodušeně řečeno maska, podle které se bude v textu vyhledávat.

Následující příklad kupříkladu nahradí všechny číslice ve stringu $text za plus:

$text = preg_replace('/[0-9]/', '+', $text);

Jestliže by si nepoužil regulární výraz, musel by si pro docílení stejného efektu psát něco takového:

$text = str_replace('0', '+', $text);
$text = str_replace('1', '+', $text);
$text = str_replace('2', '+', $text);
$text = str_replace('3', '+', $text);
$text = str_replace('4', '+', $text);
$text = str_replace('5', '+', $text);
$text = str_replace('6', '+', $text);
$text = str_replace('7', '+', $text);
$text = str_replace('8', '+', $text);
$text = str_replace('9', '+', $text);

Samotná problematika regulárních výrazů je trochu složitější, takže doporučuju na toto téma přečíst nějaký článek.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět
20.3.2017 16:36
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Tomáš Střecha
Překladatel
Avatar
Odpovídá na Michal
Tomáš Střecha:20.3.2017 16:51

Děkuji moc za objasnění a za odkaz. Stránku jsem si přečetl a teď tomu daleko více rozumím, než předtím. :)

Ještě jednou děkuji.

 
Nahoru Odpovědět
20.3.2017 16:51
Avatar
Odpovídá na Michal
Martin Štěpánek :29.3.2017 16:40

Jen doplním, že není třeba psát tolik str_replace, str_replace bere v parametru i pole, takže funguje i toto:

$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$text = str_replace($numbers, '+', $text);
:-)
Editováno 29.3.2017 16:41
Nahoru Odpovědět
29.3.2017 16:40
Všechno jde naprogramovat, chce to jen čas a chuť...
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 4 zpráv z 4.