嘗試替換一個字符串,但它似乎只匹配第一個匹配項,並且如果我有另一個匹配項,它不匹配任何內容,所以我認爲我需要添加某種類型的結尾分隔符?PHP - preg_replace不匹配多個匹配項
我的代碼:
$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);
所以,如果我用的是真實評價的$源,它匹配得很好,如果我的代碼目前使用上述那裏的2場比賽的一個,它不匹配任何東西我得到一個錯誤:
Message: Undefined index: fname}Default{/fname} {lname
Filename: schedule.php(62) : regexp code
所以我說得對,我需要提供一個結束分隔符或什麼?
感謝, 基督教
您正在使用'。*?',但留下其他匹配''*'貪婪。 (提示:如果有明顯的字符允許或禁止,總是限制模式。) – mario
謝謝馬里奧 - 錯過了一個。關於主要問題的任何想法? :) –
個人而言,我會使用['{([^}] +)}(。*?){/ \ 1}'](http://rubular.com/r/6HCgvUKIB7)。 – NullUserException