试图替换一个字符串,但它似乎只匹配第一次出现,如果我有另一个出现它不匹配任何东西,所以我想我需要添加某种结束分隔符?
我的代码:
$mappings = array(
'fname' => $prospect->forename,
'lname' => $prospect->surname,
'cname' => $prospect->company,
);
foreach($mappings as $key => $mapping) if(empty($mapping)) $mappings[$key] = '$2';
$match = '~{(.*)}(.*?){/.*}$~ise';
$source = 'Hello {fname}Default{/fname} {lname}Last{/lname}';
// $source = 'Hello {fname}Default{/fname}';
$text = preg_replace($match, '$mappings["$1"]', $source);
因此,如果我使用已注释的 $source,它匹配得很好,但如果我使用上面代码中当前有 2 个匹配的那个,它不匹配任何东西,我得到一个错误:
Message: Undefined index: fname}Default{/fname} {lname
Filename: schedule.php(62) : regexp code
那么我是否正确地说我需要提供一个结束分隔符或其他东西?
谢谢,克里斯蒂安