Seite 1 von 1

preg_replace(); komme nicht weiter

Verfasst: 23.05.2007 14:01
von Ambience
Hallo,

ich habe mir das hier zusammengebastelt:

Code: Alles auswählen

$wrap = preg_replace("/\<cont id\=\'(.*?)\.(.*?)\' \/\>/i","\$$1['$2']" ,$wrap);

nun erhalte ich aber in der ausgabe: $test['lol']

so wie es sein sollte... naja nicht ganz... das ganze sollte nicht so ausgegeben werden sondern gleich ersetzt werden mit den entsprechenden sachen... nur ich weiß nicht wie ich das umsetzen muss..

also das aus:

$test['lol'] = 'hallo';

<cont id='test.lol' />

nicht $test.['lol'] ausgegeben wird sondern das wort hallo...

Danke

Verfasst: 23.05.2007 15:34
von S2B
http://de.php.net/manual/de/reference.p ... ifiers.php => e

Dabei musst du dir aber auf jeden Fall Gedanken über die Sicherheit machen, der e-Modifier war u.a. auch für die vielen phpBB-Highlight-Lücken verantwortlich. :wink:

Verfasst: 24.05.2007 13:13
von Banger
Bastel Dir einfach eine entsprechende Callback-Funktion und nimm preg_replace_callback():

Code: Alles auswählen

<?php
function cb_arr($r) {
    return isset($GLOBALS[$r[1]][$r[2]]) ? $GLOBALS[$r[1]][$r[2]] : $r[1].'.'.$r[2];
} 

$bla = array('uschi' => 'liebt kartoffelsalat');
$wrap = "<cont id='bla.uschi' /> <cont id='hans.wurst' />";

$wrap = preg_replace_callback('/<cont id=\'(\w+)\.([^\']+)\' \/>/i', 'cb_arr', $wrap);

echo $wrap;

?>