Lid |
|
heey mede web-developers!
Ik heb even een vraagje waar ik even zo snel niet uitkom. Ik wil een reguliere expressie schrijven die diverse tags vervangt.
Zo kwam ik tot het volgende:
$array = array('naam' => 'Dummy', 'tag' => 'testing..');
$label = "Beste {naam}, {tag}";
$label = preg_replace("/({\/?)(\w+)([^}]*})/e", $array['\\2'], $label);
$array = array('naam' => 'Dummy', 'tag' => 'testing..'); $label = "Beste {naam}, {tag}"; $label = preg_replace("/({\/?)(\w+)([^}]*})/e", $array['\\2'], $label);
Deze zoekt naar een match en moet vervolgens kijken of hij de bijbehorende waarde kan krijgen om de tag daarmee te vervangen.
Ik kan natuurlijk met een foreach loop door de array heen, maar dit leek me een betere methode..
Het probleem is echter dat de bovenstaande code niet werkt. Je kan niet zomaar een array opgeven als tweede parameter.
Wat wel werkt is het volgende:
class test
{
function createLabel($label)
{
$label = preg_replace("/({\/?)(\w+)([^}]*})/e", "getValue('\\2')", $label);
return $label;
}
}
function getValue($key)
{
$array = array('test' => 'value', 'eentje' => 'testing..');
return $array[$key];
}
class test { function createLabel($label) { $label = preg_replace("/({\/?)(\w+)([^}]*})/e", "getValue('\\2')", $label); return $label; } } function getValue($key) { $array = array('test' => 'value', 'eentje' => 'testing..'); return $array[$key]; }
Dus deze oplossing is wel okay, Wat alleen niet zo mooi is dat mijn createLabel() in m'n klasse staat en getValue() niet. Omdat je geen $this-> mee kan geven in de string van de preg_replace() kan ik de getValue() niet in de klasse plaatsen.
Iemand enig idee hoe ik dit op kan lossen?
Vr gr,
Nico
|