Code: Select all
$s = "[aaa] [bbb] [ccc]";
$x['aaa'] = '111';
$x['bbb'] = '222';
$x['ccc'] = '333';
$r = preg_replace('#\[(.*?)\]#i', '\$x["$1"]', $s);
echo $r;Thanks
Moderator: General Moderators
Code: Select all
$s = "[aaa] [bbb] [ccc]";
$x['aaa'] = '111';
$x['bbb'] = '222';
$x['ccc'] = '333';
$r = preg_replace('#\[(.*?)\]#i', '\$x["$1"]', $s);
echo $r;Code: Select all
$find = array(
'#\[aaa\]#i',
'#\[bbb\]#i',
'#\[ccc\]#i'
);
$replacement = array(
'111',
'222',
'333'
);
$r = preg_replace($find,$replacement,$s);Code: Select all
function translate($txt) {
$fix = $txt[0];
$x = array(
'aaa' => '111',
'bbb' => '222',
'ccc' => '333'
);
$out = $x[$fix];
return $out;
}
$r = preg_replace_callback('#\[(.*?)\]#i','translate',$s);You're almost there. Just add 'e' modifier to the expression: '#\[(.*?)\]#ie'anjanesh wrote:How do I get 111 222 333 ?Code: Select all
$s = "[aaa] [bbb] [ccc]"; $x['aaa'] = '111'; $x['bbb'] = '222'; $x['ccc'] = '333'; $r = preg_replace('#\[(.*?)\]#i', '\$x["$1"]', $s); echo $r;
Thanks