Уважаемые StackOverflow сообщества,PHP: Заменить заполнителей с динамическим числом (разделителей, регулярное выражение)
Я в настоящее время делает свою собственную систему шаблонов для веб-сайта, в котором я могу заменить заполнители шаблона в стиле {$ материала} с php-код. У меня есть следующий код для этого:
/**
* Replace a default placeholder.
*
* @access public
* @param string $replace Placeholder name
* @param string $replacement Text with which to replace placeholder.
* @uses $leftDelimiter
* @uses $rightDelimiter
* @uses $template
*/
public function assign($replace, $replacement) {
$this->template = str_replace($this->leftDelimiter .$replace.$this->rightDelimiter,
$replacement, $this->template);
}
leftDelimiter и rightDelimiter в этом случае {$} и, соответственно.
Теперь я хочу добавить новую функцию, которая динамически разбирает заполнители, содержащие числа - скажем, {$ image_1}, {$ image_2}, {$ image_3} и позволяет использовать номера, содержащиеся внутри моего кода замены, например так что я заменил {$ image_1337} записью базы данных mysql из строки с идентификатором «1337».
Как бы я это сделал? Обширный поиск и поиск друзей Google, к сожалению, не помогли мне из-за нехватки кодовой лексики и способности объяснения. Скорее всего, это связано с регулярными выражениями, но я абсолютно не могу обернуть вокруг себя мозг, и все попытки построить подходящий вариант подвели меня.
[preg_replace_callback] (http://php.net/preg_replace_callback) может быть хорошим местом, чтобы начать поиск. – ccKep
Думаю, вам будет лучше смотреть на это несколько иначе. То, что вы делаете, - это не просто назначение шаблонов - вы создаете вспомогательный метод. Поэтому он должен иметь собственный синтаксис. Возможно, что-то вроде {image (1337)}. Конечно, вам все равно нужно добавить новый код, чтобы справиться с этим, но я думаю, что он окупится в долгосрочной перспективе. – RobMasters