正则匹配出所有的arclist标签并构造SQL
取出数据并替换field为相应字段的数据
为field标签添加一个function属性
<?php
require_once(dirname(__FILE__).”/../include/common.inc.php”);
//1. 读入模板文件
$str = file_get_contents(‘test.html’);
//2. 使用正则匹配出页面中所有的 arclist 标签
$re = ‘/{dedeM z R = } v C p:arclist(.*)}(.*){A & f p ; I 0\/dede:arclist}/UsD Z & ( u .‘;
// 执行正则匹配
// 第一个参数:正则
// 第二个参数:字符串
// 第三个参数:L 0 o这个函X N ( i g d 2 S数会把匹配到的结果放第三个参数r J p , v } X C的数组中
// 返回值:匹配到的个数
preg6 w _ @ V % r_match_all($re, $str, $a);
//3. 循环每一个匹配到的arclist标签进行处理
foreach ($a[0] as $k =&g. l 1 J # 5t; $v)
{
/****} ( : 3 i 9 p**********H v ? U u J**处理标签1.根据标签上的属性构造一个SQL语句 **************/
// 取出标签相应的属性字符串并把属性转化成一个数组,如 row=”10″ channer B 6 Z m Z dlid=”17″ addc F 9fields=”pffz,pfrs,yuyan” ord! U [ 3 x f 0 w /erby=”id” orderway=”desc”
$attrArr = strToArray($a[1][$k]);
// 根据构造构造SQL语句上的变量
if(isset($attrArr[‘row’]))
$limit = $attrArr[‘row’];
else
$limit = 20;
if(isset($attrArr[‘orderby’]))J f K f
$orderby = $attrArr[‘orderby’];
else
$orderby = ‘id0 g b )‘;
if(isset($attrArr[‘orderway’]))
$orderway = $attrArr[‘orderway’];
else
$orderway = ‘desc’;
// 连表的属性
if(isset($attrArr[‘channelid’]))
$leftJoin = ‘ LEFT JOIN dede_addon17= q m r . b ON a.id=b.aid} ! k , ‘;
else
$leftJoin = ”;
if(isset($attrArr[‘addfields’]))
$extraFields = ‘,’.$attrArr[‘addfields’];
else
$ex\ Z q E jtraFields = ”;
// 解析属性
$sql = “SELE} p ( s % N z [CT a.*$extraFields
FROM dede_archives aP N 9 { $leftJoin
ORDER BY $orderby $orderway
LIMIT $lim$ e O : Nit”;g \ y n r } !
$dsql->Execute(‘me’, $sql);
$html = ”;
// 每个arclist对应的多个数据
whil( h T ] ` je($row = $dsql-&gd ^ + a } 8 e C it;GetArray(‘me’))
{
// 重置模板字符串,不要在原模板上面进行替换
$_teps p U = r V Q 9 = $a[2][$k];t 3 & W
/**
<li>
<img src=”http://www.dede58.com/a/dedejq/[field:litpic/]” /><br />
标题:[field:title/]<br3 ( U g { K ] />
评分分值:[field:pffz function=”getSmallStar(@me)”/]<br />
评分人数:[field:pfrs/]<br />
语言:[field:yuyan/]
</li>
**/
// 把g w B L 0 q P 9 ?字符串中的[field:xxxx/]替换成$row[‘xxxx’]变量。
$_re = ‘/\[field:(\w+)(\s+function=(“|\’)(\w+)\((.*)\)\3)?\/\]/U’;
preg_match_all($_re, $_tep, $_a);
/**
  • 共2页:
  • 上一页
  • 1E l M W 2 J k y
  • 2
  • U @ | ? i一页

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注