dedecms模板原理,实现标签替换(2)
array
0 =>
array
0 => string '[field:litpic/]' (length=15)
1 => string '[field:title/]' (length=14)
2 => string '[field:pffz/]' (length=13)
3 => string '[field:pfrs/]' (length=13)
4 => string '[field:yuyan/]' (length=14)
1 =>
array
0 => string 'litpic' (length=6)
1 => string 'title' (length=5)
2 => string 'pffz' (length=4)
3 => string 'pfrs' (length=4)
4 => string 'yuyan' (length=5)
*/
// 再循环每一条 记录中的每个字段的值
foreach($_a[0] as $_k => $_v)
{
if($_a[4][$_k] == '')
// 把[field:xxx/]字符串替换成相应的$row[xxx]变量
$_tep = str_replace($_v, $row[$_a[1][$_k]], $_tep);
else
{
// 如果参数中有@me就把@me替换成当前这个字段的数据库中的值
$_a[5][$_k] = str_replace('@me', $row[$_a[1][$_k]], $_a[5][$_k]);
// 如果有函数就调用函数
$funStr = '$_val='.$_a[4][$_k]."({$_a[5][$_k]});";
eval($funStr);
$_tep = str_replace($_v, $_val, $_tep);
}
}
$html .= $_tep;
}
// 到这arclist标签就已经都解析成了相应的数据,把整个arclist标签替换成解析之后的数据,$html就是
arclist最终解析完成之后的HTML的字符串
$str = str_replace($v, $html, $str);
// 一个arclist就解析完成了
}
// 把解析好的字符串生成前台静态页
file_put_contents('./index.html', $str);
echo '解析成功!';
function strToArray($str)
{
$str = trim($str);
// 从属性字符串中匹配出每个属性,格式如:row="10" channelid="17" addfields="pffz,pfrs,yuyan" orderby="id" orderway="desc"
$re = '/[a-z]+\s*=\s*("|\').*\1/U';
$data = array();
preg_match_all($re, $str, $a);
foreach ($a[0] as $k => $v)
{
$_a = explode('=', $v);
// 去掉属性值左右的引号,属性左右的引号是单引号还是双引号不能确定所以需要使用$a[1][$k]变量来代替,这个变量是正则中
的第一个括号的内容,匹配的就是引号
$_a[1] = ltrim($_a[1], $a[1][$k]);
$_a[1] = rtrim($_a[1], $a[1][$k]);
$data[$_a[0]] = $_a[1];
}
return $data;
}
免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。
来源:网友投稿 关注:
时间:2020-02-10 08:33
☉首先声明,只要是我们的vip会员所有源码均可以免费下载,不做任何限制(了解更多)
☉本站的源码不会像其它下载站一样植入大量的广告。为了更好的用户体验以后坚持不打水印
☉本站只提供精品织梦源码,源码在于可用,不在多!!希望在这里找到你合适的。
☉本站提供的整站织梦程序,均带数据及演示地址。可以在任一源码详情页查看演示地址
☉本站所有资源(包括源码、模板、素材、特效等)仅供学习与参考,请勿用于商业用途。
☉如有其他问题,请加网站客服QQ进行交流。
☉本站的源码不会像其它下载站一样植入大量的广告。为了更好的用户体验以后坚持不打水印
☉本站只提供精品织梦源码,源码在于可用,不在多!!希望在这里找到你合适的。
☉本站提供的整站织梦程序,均带数据及演示地址。可以在任一源码详情页查看演示地址
☉本站所有资源(包括源码、模板、素材、特效等)仅供学习与参考,请勿用于商业用途。
☉如有其他问题,请加网站客服QQ进行交流。
相关织梦教程:
- dedecms SQL注入漏洞 member/album_add.php 修复
- dedecms cookies泄漏导致SQL漏洞 /member/article_add
- Windows虚拟主机指定目录禁用脚本执行权限方法
- 西部数码虚拟主机设置禁止脚本执行权限
- 阿里云主机设置织梦程序禁止脚本执行权限及禁止写入
- dedecms织梦导致CPU峰值现象的解决办法
- 织梦程序网站被挂马或快照劫持终极解决办法
- 阿里云提醒/member/reg_new.php注入漏洞解决办法
- 织梦安全:更改plus名称
- 织梦栏目属性增加链接rel、nofollow和新窗口target
- 织梦问答模块PHP7报错解决方法
- dedecms解决移动端首页不自动更新问题