0
我有一個模板系統,用數據庫中相應的值替換大括號內的每個關鍵字。替換之後更改上一個單詞
例子:該公司與{}學同意 ...
的問題是,一些模板是在西班牙,有是說,一個規則,當一個單詞開頭字母i
以前的「和」連接器是e
而不是y
。
示例: 通常的方式是說:
伊萬ý佩德羅。
但是,如果第二個名字以i
開頭,那麼連接器是e
。
佩德羅Ë伊萬
我需要找到一種方法,以獲得準確的文件做這些替代品。
我知道我可以做雙重處理,先替換關鍵字,然後用替換 " e i"
,但我不確定這是否是解決此問題的最佳方法。
我使用的替代代碼如下:
$content = preg_replace_callback('#{(.*?)}#',
function ($key) use ($agreement) {
return utf8_decode($agreement[strtolower($key[1])]);
},
$content);
哪裏$content
是模板文字和$agreement
是從數據庫中值的數組。
注意:它應區分大小寫。例如,如果文本是Pedro y Iván
,則應將其替換爲Pedro e Iván
而不是Pedro e iván
。
答:基礎上克里斯的答案,我終於結束了這段代碼中注重如果原始y
是大寫或小寫。
$text = preg_replace_callback(
'#([Yy])?{(.*?)}#',
function ($matches) use ($data) {
$and = '';
$replacement = utf8_decode($data[strtolower($matches[2])]);
if ($matches[1]){
$and_replacement = array(' Y '=>' E ',' y '=>' e ');
$and = in_array(substr($replacement,0,1),array('i', 'I'))?$and_replacement[$matches[1]]:$matches[1];
}
return $and.$replacement;
},
$text
);
謝謝。當然,伊莎比伊凡性感。:)我只是做了一些小的改變,以便確定原始的'y'是大寫還是小寫。 – Memochipan