Hallo,
hab hier ein kleines Problem mit dem Pattern:
Ein String z.B.:
{aaa,v} {ccc,p} {bbb,v}
soll zu
var1 phrase1 var2
konvertiert werden!
Leider erhalte ich aber
var1 phrase1 {bbb,v}
Irgendwas stimmt imho nicht mit der Backreference...
Hier der Sourcecode:
Bitte beachten: Die { und } Klammer in der 5. Zeile sind escapet - das Forum verschluckt nur die backslashes!
hab hier ein kleines Problem mit dem Pattern:
Ein String z.B.:
{aaa,v} {ccc,p} {bbb,v}
soll zu
var1 phrase1 var2
konvertiert werden!
Leider erhalte ich aber
var1 phrase1 {bbb,v}
Irgendwas stimmt imho nicht mit der Backreference...
Hier der Sourcecode:
PHP-Code:
<?php
//funktion zum ersetzen der variablen / phrasen
function replace_placeholders($string, $vars, $type) {
$search = array();
$replace = array();
$pattern = "/\{(.*?),".$type."\}/";
preg_match_all($pattern,$string,$vars_names);
for($i=0;$i<count($vars_names[0]);$i++) {
if(array_key_exists($vars_names[1][$i],$vars)) {
$search[] = $vars_names[0][$i];
$replace[] = $vars[$vars_names[1][$i]];
}
}
return str_replace($search,$replace,$string);
}
//test string
$string = "{aaa,v} {ccc,p} {bbb,v}";
//variablen in test string ersetzen
$array = array('aaa' => 'var1',
'bbb' => 'var2');
$string = replace_placeholders($string, $array, 'v');
//phrasen in test string ersetzen
$array = array('ccc' => 'phrase1');
$string = replace_placeholders($string, $array, 'p');
echo $string;
?>
Kommentar