IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: preg_replace

Aktivity
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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
20.3.2017 16:36
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.