Jak se mohu dostat na zápas při použití preg_replace v PHP?

hlasů
49

Snažím se chytit velkými písmeny pár slov a zabalte je do rozpětí tagy. Já používám preg_replace pro výpis a balicí účely, ale není to nic výstupu.

preg_replace(/[A-Z]/, <span class=\initial\>$1</span>, $str)
Položena 05/08/2008 v 01:35
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
50

Musíte dát vzor v závorce /([A-Z])/, jako je tento:

preg_replace("/([A-Z])/", "<span class=\"initial\">$1</span>", $str)
Odpovězeno 05/08/2008 v 01:36
zdroj uživatelem

hlasů
26

\0 bude také odpovídat celé uzavřeno výraz aniž by výslovně zachytit pomocí závorek.

preg_replace("/[A-Z]/", "<span class=\"initial\">\\0</span>", $str)

Jako vždy můžete přejít na php.net/preg_replace nebo php.net/<whatever hledaný výraz> rychle vyhledávat v dokumentaci. Quoth dokumentaci:

\ 0 nebo $ 0 odkazuje na text porovnána celého vzoru.

Odpovězeno 28/08/2008 v 10:02
zdroj uživatelem

hlasů
8

Z dokumentace preg_replace na php.net:

Náhrada může obsahovat odkazy tvaru \ n nebo (od PHP 4.0.4) $ n, s druhé formě je výhodná jedna. Každý takový odkaz bude nahrazen textem zachycené vícenásobná radost v závorkách vzoru.

Viz Flubba je příklad.

Odpovězeno 05/08/2008 v 02:39
zdroj uživatelem

hlasů
6

Použít závorky kolem požadované zajetí.

Odpovězeno 23/06/2009 v 18:54
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more