preg_replace(); komme nicht weiter

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Ambience
Mitglied
Beiträge: 628
Registriert: 02.09.2006 11:28
Wohnort: daheim
Kontaktdaten:

preg_replace(); komme nicht weiter

Beitrag 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
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag 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:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
Banger
Ehemaliges Teammitglied
Beiträge: 375
Registriert: 03.05.2005 21:53
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag 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;

?>
Antworten

Zurück zu „Coding & Technik“