Dag Tweakers,
Ik zit met twee lastige problemen, en kom echt niet meer veder.
Het verhaal is in een variable string staat: bal bla tekst [FORM_1] en meer tekst [BLA_1] en misschien en zo [FORM_2]. Nu filter ik alles tussen de blokhaken. Dit zijn functies in het object MACRO. Deze voer ik uit en wil het resultaat vervangen met preg_replace.
Dit is mijn code:
Probleem 1 is dat preg_replace de hash key variabele niet wil resolven.
Ik denk aan de syntax maar weet niet zeker.
PHP.NET geeft als voorbeeld:
en
Nu heb ik zoals je kunt zien, niet 2 arrays maar een hash.
$replacement = $macroResult['FORM_1'];
werkt wel maar het zou $macroResult[$var] moeten zijn waarbij $var de hash key is.
Erg lastig om uit te leggen.
Probleem 2 is dat de function_exists niet werkt bij een class. Maar hier kan ik nog verder op zoeken.
Greetz West
Ik zit met twee lastige problemen, en kom echt niet meer veder.
Het verhaal is in een variable string staat: bal bla tekst [FORM_1] en meer tekst [BLA_1] en misschien en zo [FORM_2]. Nu filter ik alles tussen de blokhaken. Dit zijn functies in het object MACRO. Deze voer ik uit en wil het resultaat vervangen met preg_replace.
Dit is mijn code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| preg_match_all("/\\[(\w+)\]/", $sBody,$aMacro); if(!empty($aMacro[1])) { foreach($aMacro[1] as $iK => $MACRO) { list($sFunc,$iVar) = split("_",$MACRO,2); $macroResult[$MACRO] = MACRO::$sFunc($iVar); # onderstaande code werkt niet :S //$sFunc_exists = "MACRO::$sFunc"; //if (function_exists('MACRO::$sFunc')) { // $sBody .= MACRO::$func_macro($sVars); //} else { // $sBody .= "function bestaat niet"; //} } $pattern = '/\\[(\w+)\]/'; $replacement = $macroResult['$1']; $sBody = preg_replace($pattern, $replacement,$sBody); } |
Probleem 1 is dat preg_replace de hash key variabele niet wil resolven.
Ik denk aan de syntax maar weet niet zeker.
PHP.NET geeft als voorbeeld:
code:
1
2
3
4
5
6
7
8
| $string = 'The quick brown fox jumped over the lazy dog.'; $patterns[0] = '/quick/'; $patterns[1] = '/brown/'; $patterns[2] = '/fox/'; $replacements[2] = 'bear'; $replacements[1] = 'black'; $replacements[0] = 'slow'; echo preg_replace($patterns, $replacements, $string); |
en
code:
1
2
3
4
| $patterns = array ('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/', '/^\s*{(\w+)}\s*=/'); $replace = array ('\3/\4/\1\2', '$\1 ='); echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27'); |
Nu heb ik zoals je kunt zien, niet 2 arrays maar een hash.
$replacement = $macroResult['FORM_1'];
werkt wel maar het zou $macroResult[$var] moeten zijn waarbij $var de hash key is.
Erg lastig om uit te leggen.
Probleem 2 is dat de function_exists niet werkt bij een class. Maar hier kan ik nog verder op zoeken.
Greetz West
[ Voor 18% gewijzigd door Verwijderd op 15-03-2006 17:15 ]