文字列を置き換えようとしていますが、最初のオカレンスにしか一致しないようです。別のオカレンスがある場合は何にも一致しないので、何らかの終了区切り文字を追加する必要があると思いますか?
私のコード:
$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
それで、私は終了区切り文字か何かを提供する必要があると言っているのは正しいですか?
ありがとう、クリスチャン