Autor Zpráva
huff
Profil *
 $tmp_source = preg_replace_callback("/\{mod_(.+)\}/", "functions::getMatches", $tmp_source);

V tomto regulárním výrazu chci vybraz všechno co je za {mod_, bez poslední složené závory, dělám to evidentně špatně, protože, pokud mám dvě složené žávorky vedle sebe a nejsou odděleny koncem řádku, vezme je to obě. Mohl by jste mi tu někdo prosím upravit ten regulární výraz tak, aby to bylo nějak takto:

začínat na "{mod_" vyjmout do závorky to za mod, a končit na "}"

Díky.
Majkl578
Profil
Přidej modifikátor U.
huff
Profil *
Majkl578:
Co to je přesně?
Majkl578
Profil
To jsou znaky, které jsou za ukončovacím delimiterem. V tvém případě to je /, takže regulární výraz bude: "/\{mod_(.+)\}/U".
huff
Profil *
Majkl578:
Dík, a co způsobí /s ?
huff
Profil *
Majkl578:
Tak dobrý, funguje /U, tak je to v pohodě, ale měl bych ještě jeden dotaz.

Dostávám z toho takovéhle pole:
Array ( [0] => {mod_lastcoms} [1] => lastcoms ) Array ( [0] => {mod_lastarts} [1] => lastarts ) Array ( [0] => {mod_fuck_off} [1] => fuck_off ) Array ( [0] => {mod_laaa} [1] => laaa ) Array ( [0] => {mod_folder} [1] => folder )


Když bych chtěl nějak automaticky brát jen jakoby ten index 1, přičemž se bude počet těch polí dynamicky měnit, šlo by to nějak?
Majkl578
Profil
Callback vždy dostane pole.
huff
Profil *
Majkl578:
Ano, to jsem si tak nějak všiml, ale mám problém ho zpracovat - obzvlášť když předem nevím, kolik polí dostanu.
Majkl578
Profil
Callback dostane vždy jeden argument - pole. Obsah tohoto pole se řídí zapsáním regulárního výrazu.
Pokud budu mít výraz, kde budou dva zachytávané podvýrazy, dostanu pole o třech hodnotách. První bude celý řetězec, druhý zachycený řetězec a třetí druhý zachycený.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0