POST TIME:2018-08-09 00:45
剛剛接觸織夢(mèng),就從基礎(chǔ)看起,希望大家不要見(jiàn)笑,多多鼓勵(lì)啊 呵呵
在測(cè)試的時(shí)候發(fā)現(xiàn)靜態(tài)模板類里面的
{dede:foreach array=”數(shù)組名”} [field:key/] [field:value/] {/dede:foreach}這本標(biāo)簽總不能正常使用,執(zhí)行后總是返回 [field:key/] [field:value/] [field:key/] [field:value/] ….n個(gè)“[field:key/] [field:value/] ”而不是正在的數(shù)據(jù),在網(wǎng)上搜了搜,結(jié)果大部分都是轉(zhuǎn)載織夢(mèng)系統(tǒng)的原裝幫助文檔里面的資料,沒(méi)有說(shuō)明此問(wèn)題,這里有人也遇到了一樣的問(wèn)題,本來(lái)想回復(fù)他來(lái),可是我是新人,他所在的版塊我無(wú)權(quán)回復(fù),就發(fā)一個(gè)新帖了,呵呵,扯遠(yuǎn)了,書(shū)歸正傳!
為什么會(huì)有這樣的效果呢,數(shù)組名設(shè)置后是可以遍歷的,而且遍歷的次數(shù)也是對(duì)了,就是數(shù)據(jù)不能正常顯示
肯定是哪里解析錯(cuò)誤了,
順著思路往下找,
最后在include/dedetag.class.php文件中的第578行和579行(版本不一樣可能不同,在該文件的AssignSysTag()方法體里面)找到了答案!
$istr .= preg_replace(“/[field:key([ ]+)/]/is”,$k,$this->CTags[$i]->InnerText);
$str .= preg_replace(“/[field:value([ ]+)/]/is”,$v,$istr);
問(wèn)題就在正則表達(dá)式上,主要是這部分([ ]+)
說(shuō)明在 [field:key 與 /] 之間可以包含換行、制表符、空格,但是不能什么都沒(méi)有
也就是說(shuō) [field:key/]是不對(duì)的
必須是
[field:key /](空格的)
或
[field:key /](制表符的)
或
[field:key
/](換行的)
這樣就解決問(wèn)題了,我測(cè)試是可以的。
=============================
希望對(duì)需要的人可以解決問(wèn)題!