gpt4 book ai didi

php - 替换单个变量是可行的,如何替换每个出现的标签?

转载 作者:行者123 更新时间:2023-11-29 11:11:32 25 4
gpt4 key购买 nike

所以我为我公司正在开发的项目制作了一个基本模板系统。目前,我可以加载模板并将其打印出来,并使用我们开发的标签通过调用<template::>template_name<::/template>来调用另一个模板中的模板。在主模板中。只要我只调用一个模板,这效果就很棒。第一次出现模板标签后,系统将停止,并且不会继续从数据库中读取字符串的其余部分以获取可能的其他模板标签。

如果我在脚本中多次调用相同的模板,它将正确渲染,但如果我调用新模板,它会被系统忽略并打印为普通文本。

这是我当前用于调用标签并替换它们的函数:

$inject_template = $this->get_template_name_between($template, "<template::>", "<::/template>");
if(!empty($inject_template)) {
$query_for_template = "SELECT * FROM ".$field." WHERE templateid = '".$inject_template."' LIMIT 1";
$injected_template_data = $wms->function->query($query_for_template);
while($returned = mysql_fetch_array($injected_template_data)) {
$type = $returned['templatetype'];
}
$template = str_replace('<template::>'.$inject_template.'<::/template>', $this->injectTemplate($inject_template, $type), $template);
}

public function injectTemplate($template_id, $template_number_type) {
return $this->extract_template($template_id, $template_number_type);
}

public function get_template_name_between($string, $start, $end) {
$ini = strpos($string, $start);
if($ini == 0) return '';
$ini += strlen($start);
$len = strpos($string, $end, $ini) - $ini;
return substr($string, $ini, $len);
}

请记住,如果我调用一个标签,这就有效,我只需要一种方法来强制该函数将所有标签替换为每个标签的正确模板。我在想也许是一个 for 循环,然后计数,但不确定执行此操作的正确语法,我现在一整天都在盯着这个,哈哈。提前致谢!

最佳答案

您可以使用循环不断替换,直到字符串中没有模板为止。

while ($inject_template = $this->get_template_name_between($template, "<template::>", "<::/template>")) {
$query_for_template = "SELECT * FROM ".$field." WHERE templateid = '".$inject_template."' LIMIT 1";
$injected_template_data = $wms->function->query($query_for_template);
$returned = mysql_fetch_array($injected_template_data);
$type = $returned ? $returned['templatetype'] : '';
$template = str_replace('<template::>'.$inject_template.'<::/template>', $this->injectTemplate($inject_template, $type), $template);
}

您不需要在 mysql_fetch_array() 周围使用 while() 循环,因为查询仅限于 1 行。

顺便说一句,您应该停止使用 mysql_* 函数。转换为 mysqliPDO,并使用准备好的查询。

关于php - 替换单个变量是可行的,如何替换每个出现的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40477353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com