Diskuze: preg_replace

PHP PHP preg_replace American English version English version

Aktivity (1)
Avatar
Tomáš Střecha:20. března 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. března 16:01
Avatar
Odpovídá na Tomáš Střecha
Michal Struna:20. března 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  +3 20. března 16:36
Avatar
Odpovídá na Michal Struna
Tomáš Střecha:20. března 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  +1 20. března 16:51
Avatar
Odpovídá na Michal Struna
Martin Štěpánek (Enormyk):29. března 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. března 16:41
Nahoru Odpovědět  +1 29. března 16:40
Nesnáším, když někdo u if nepoužívá {}, byť se jedná o jeden řádek.
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.