A ver si esto ayuda...
Código PHP:
Ver original$subject = '$color.name';
$callback = function($matches) use ($subject) {
$callback2 = function($groups) use ($matches) {
$match = $matches[$groups[1]]; // $groups[1] devuelve el '1' de '$1'
// por tanto seria $matches[1]
// equivalente a 'name' (sin el punto)
return str_replace( // duevuelvo '["name"]' para $replaced $groups[0], // esto tomaria cada uno de los $1 $2 encontrados..
$match, // seria 'name'
'["$1"]' // se reemplaza '$1' por 'name'
);
};
'@\$([0-9]{1,2})@i', // busca los $1 $2 $3 etc.. que uno ponga
$callback2, // llama a $callback2
'["$1"]' // $1 deberia ser remplazado por 'name'
);
$matches[0], // esto es ".name"
$replaced, // esto es '["name"]'
$subject // esto es '$color.name'
);
};
'@\.([a-z_]+)@i', // busca los ".algo" en este caso ".name"
$callback, // llama a $callback
$subject // string = '$color.name'
);
echo "<br>handed replaced: " . $subject;
output
Código HTML:
Ver originalhanded replaced: $color$color["["name"]"]