花魁直播高品质美女在线视频互动社区 - 花魁直播官方版

 歡迎來到素材無憂網(wǎng),按 + 收藏我們
登錄 注冊 退出 找回密碼

dedecms模板原理,實現(xiàn)標簽替換

時間: 2020-03-13 09:28 閱讀: 作者:素材無憂網(wǎng)

正則匹配出所有的arclist標簽并構造SQL   取出數(shù)據(jù)并替換field為相應字段的數(shù)據(jù)   為field標簽添加一個function屬性   <?php   require_once(dirname(__FILE__)."/../include/common.inc.php");   //1. 讀入模板文件   $str = file_get_contents('test.html');   //2. 使用正則匹配出頁面中所有的 arclist 標簽   $re = '/{dede:arclist(.*)}(.*){\/dede:arclist}/Us';   // 執(zhí)行正則匹配   // 第一個參數(shù):正則    // 第二個參數(shù):字符串   // 第三個參數(shù):這個函數(shù)會把匹配到的結果放第三個參數(shù)的數(shù)組中   // 返回值:匹配到的個數(shù)   preg_match_all($re, $str, $a);   //3. 循環(huán)每一個匹配到的arclist標簽進行處理    foreach ($a[0] as $k => $v)   {      /****************處理標簽1.根據(jù)標簽上的屬性構造一個SQL語句 **************/      // 取出標簽相應的屬性字符串并把屬性轉化成一個數(shù)組,如 row="10" channelid="17" addfields="pffz,pfrs,yuyan" orderby="id" orderway="desc"      $attrArr = strToArray($a[1][$k]);      // 根據(jù)構造構造SQL語句上的變量      if(isset($attrArr['row']))          $limit = $attrArr['row'];      else          $limit = 20;      if(isset($attrArr['orderby']))          $orderby = $attrArr['orderby'];      else          $orderby = 'id';      if(isset($attrArr['orderway']))          $orderway = $attrArr['orderway'];      else          $orderway = 'desc';      // 連表的屬性      if(isset($attrArr['channelid']))          $leftJoin = ' LEFT JOIN dede_addon17 b ON a.id=b.aid ';      else          $leftJoin = '';      if(isset($attrArr['addfields']))          $extraFields = ','.$attrArr['addfields'];      else          $extraFields = '';      // 解析屬性            $sql = "SELECT a.*$extraFields              FROM dede_archives a $leftJoin               ORDER BY $orderby $orderway               LIMIT $limit";      $dsql->Execute('me', $sql);      $html = '';      // 每個arclist對應的多個數(shù)據(jù)      while($row = $dsql->GetArray('me'))      {          // 重置模板字符串,不要在原模板上面進行替換          $_tep = $a[2][$k];          /**          <li>              <img src="[field:litpic/]" /><br />               標題:[field:title/]<br />               評分分值:[field:pffz    function="getSmallStar(@me)"/]<br />               評分人數(shù):[field:pfrs/]<br />               語言:[field:yuyan/]          </li>      **/          // 把字符串中的[field:xxxx/]替換成$row['xxxx']變量。          $_re = '/\[field:(\w+)(\s+function=("|\')(\w+)\((.*)\)\3)?\/\]/U';          preg_match_all($_re, $_tep, $_a);          /**  

版權聲明: 本站資源均來自互聯(lián)網(wǎng)或會員發(fā)布,如果侵犯了您的權益請與我們聯(lián)系,我們將在24小時內刪除!謝謝!

轉載請注明: dedecms模板原理,實現(xiàn)標簽替換

標簽:  
相關文章
模板推薦