主題: 摘要頁面的靈異現象 作者: bibicall 於 十二月 06, 2005, 10:41:48 下午 最近更新網誌時,發現了一個怪現象
就是摘要頁面上顯示的內文部分,某幾篇文章會無端消失 但網誌的主首頁顯示是正常的 本來想說,反正不影響網站運作,就不想深究 但昨日再次發表新文章時,同樣的問題又出現了(詳見foto 126.3 Blog (http://www.foto126-3.idv.tw/)) 於是,我在我的測試站 (http://plog.foto126-3.idv.tw/)中做進一步的測試 以正式站上發表的同一篇文章與另一段新文章做測試 結果,新發表的文字能正常顯示,但正式站上發表的同一篇文章依舊不能顯示 我時在想不透到底是為什麼 我是使用html原始碼編輯模式,每段落文字都夾在<p>...</p>標籤中,難道說是htmlarea在搞鬼? 目前使用的版本是 LifeType 1.01 最近僅在測試站上做迴響改用tinymce文字編輯器的測試 其他部分並無任何更動 暫時先把這個現象回報,等正式更新為 1.02時 若還有這個問題,再想辦法解決嚕 :-S 作業環境如下: Operating system:Linux Apache version:1.3.33 PHP version:4.3.11 MySQL version:4.0.22-standard 主題: Re: 摘要頁面的靈異現象 作者: lss 於 十二月 06, 2005, 11:50:00 下午 hi bibicall:
我解決了! :-D 問題出在 strip_tags 的使用方式 (http://smarty.php.net/manual/en/language.modifier.strip.tags.php)。如果把 summary/post.template 改成如下: 引用 {assign var="blog" value=$post->getBlogInfo()} 就不會文章內容被 strip_tags 給吃掉了。strip_tags 預設是讓 HTML 標籤用空格取代。可是 smarty 內部是用一個正規表示式做這件事:{assign var="request" value=$blog->getBlogRequestGenerator()} <h5><a href="{$request->postPermalink($post)}">{$post->getTopic()}</a></h5> <div class="subtitle"> {$locale->tr("blog")} <a href="{$request->blogLink()}">{$blog->getBlog()}</a> </div> <p> {$post->getText()|strip_tags:false|truncate:200:"..."} </p> ......後略....... 引用 preg_replace('!<[^>]*?>!', ' ', $string); 我想,這樣做應該是沒有考慮到 utf-8 的中文字裡,可能有等同 '<' 和 '>' 的字碼在內,所以內容被吃掉了(這部份純屬猜測)。若在樣版裡面使用 strip_tags:false ,則是 HTML 標籤不用空格取代,重點是,他用的是 PHP 的 strip_tags 函數,所以沒有誤判。我想,如果把正規表示式加點修改,讓他能支援 utf-8 文字的判斷,應該就不會再有內文被吃掉的情況了。比如說改成下面這樣: 引用 preg_replace('!<[^>]*?>!u', ' ', $string); 加上一個小寫 u 做修飾子,讓他支援 utf-8 大概就行了。有空再驗證看看。不過,這樣做,每回 lifetype 更新 smarty 版本時,大概都得改一次,有點小麻煩。主題: Re: 摘要頁面的靈異現象 作者: bibicall 於 十二月 07, 2005, 12:04:11 上午 我本來還以為我在網誌寫了太多公司的壞話
被公司的IT發現了 :-P 因為出問題的那兩篇剛好都跟公司有關,哈哈哈 不過還是有個小小的疑問,smarty文件中的那個例子 他說 程式碼: <?php 模版寫成: 引用 {$articleTitle} {$articleTitle|strip_tags} {* same as {$articleTitle|strip_tags:true} *} {$articleTitle|strip_tags:false} 最後顯示: 引用 Blind Woman Gets <font face="helvetica">New Kidney</font> from Dad she Hasn't Seen in <b>years</b>. Blind Woman Gets New Kidney from Dad she Hasn't Seen in years . Blind Woman Gets New Kidney from Dad she Hasn't Seen in years. strip_tags:false 不是指strip_tags變成沒作用嗎?那顯示的結果應該是跟第一行一樣,所有的 html 標籤都出現才對,不是嗎? 還是,我有那邊誤解了? 主題: Re: 摘要頁面的靈異現象 作者: bibicall 於 十二月 07, 2005, 12:17:03 上午 重看一次 lss 說的原理
我發現了其中的差異 :-P 對不起,我耍笨了! 主題: Re: 摘要頁面的靈異現象 作者: markwu 於 十二月 12, 2005, 12:22:13 下午 Hi lss:
傷腦筋,如果我改成這樣,對其他編碼的人會有問題嗎?沒有問題我才能加到 SVN 中。 Mark 主題: Re: 摘要頁面的靈異現象 作者: lss 於 十二月 12, 2005, 12:29:38 下午 Hi lss: hi mark:傷腦筋,如果我改成這樣,對其他編碼的人會有問題嗎?沒有問題我才能加到 SVN 中。 Mark 你指的是那個 u 修飾子嗎?那肯定會對其他編碼的人有影響。還記得當初我們在討論 search-highlight 時,就曾經用過這個 u 嗎?改好後,隔沒兩天,就出現一位網友(忘了是誰了 :-P )用 big5 的,還改了一個 big5 專用版呢! 留給有需要的人自己改吧! lss 主題: Re: 摘要頁面的靈異現象 作者: markwu 於 十二月 12, 2005, 12:30:53 下午 好!瞭解! :-)
Mark 主題: Re: 摘要頁面的靈異現象 作者: lss 於 十二月 12, 2005, 12:31:27 下午 忽然想到,這有需要的,應該是使用 utf-8 的絕大多數亞洲語系網友,這~~~~~~~~~~
lss |