Autor Zpráva
huff
Profil *
Čuste. Mám tuto konstrukci:
$tmp_source = preg_replace("/\{mod_(.+)\}/", $instance->loadModule('$1', $md), $tmp_source);


Apostrofy jsem tam teď dal jako poslední možnost, a také to nefunguje.

Potřebuji vlastně tu proměnnou, kterou mi vrátí první závorka dostat do té funkce jako parametr, ale nejde to, poradíte někdo?
Majkl578
Profil
K tomu slouží preg_replace_callback.
Příklad:
var_dump(preg_replace_callback('~([0-9]+)~', function($matches) {
  return strrev($matches[1]);
}, 'foo 12 bar 5541 baz'));//otočí čísla
huff
Profil *
Majkl578:
Děkuji ale, stále jsem to bohužel nepochopil, nevím kam mám dát co. Mohl bych požádat o podrobnější vysvětlení?
Majkl578
Profil
Řeknu to jinak a jednoduše, druhý argument funkce preg_replace_callback je callback (funkce nebo metoda objektu), která jako argument dostane pole nalezených hodnot dle regulárního výrazu. Tato funkce/metoda by měla obsahovat i return, které vrátí hodnotu, kterou bude daná položka nahrazena.
huff
Profil *
Majkl578:
huff:
která jako argument dostane pole nalezených hodnot dle regulárního výrazu.
v proměnné $matches?
huff
Profil *
Ještě teď mám další problém:
 $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.

Moderátor Majkl578: Na tento problém navazuje a odpovídá téma Pomoc s regulárním výrazem.
Toto téma je uzamčeno. Odpověď nelze zaslat.