В JavaScript можно определить возвратную функцию, когда вы делаете строки замены:Строка замены в PHP с функцией возврата
function miniTemplate(text, data) {
return text.replace(/\{\{(.+?)\}\}/g, function(a, b) {
return typeof data[b] !== 'undefined' ? data[b] : '';
});
}
Это несколько строк кода позволяют мне создать очень аккуратную систему шаблонов. Регулярное выражение соответствует всем строкам «{{something}}» внутри текстовой переменной, а функция возврата соответствует, если в объектных данных находится , а если оно есть, оно заменяет его.
Так,
text = "Hello {{var1}}, nice to meet {{var2}}";
data = { var1: "World", var2: "You" }
//result => "Hello World, nice to meet You"
Im пытается повторить это функциональность PHP, но единственное решение, которое приходит на ум использует 2 cicles, одна из которых разбора каждый элемент массива данных, а второй внутри сначала, который ищет строку внутри Text.
Есть ли более чистый способ в php?
Используйте 'preg_replace_callback' –
вы пытались сделать то же самое, как JS? Узнайте, что находится внутри двойных скобок и выполняет замену? – FMashiro
Вы можете найти решение на основе 'preg_replace-callback()': http://php.net/manual/en/function.preg-replace-callback.php – Jan