LifeType 中文開發論壇

支援 => 使用與操作 => 主題作者是: bibicall 於 十二月 06, 2005, 10:41:48 下午



主題: 摘要頁面的靈異現象
作者: 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()}
   {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>
......後略.......
就不會文章內容被 strip_tags 給吃掉了。strip_tags 預設是讓 HTML 標籤用空格取代。可是 smarty 內部是用一個正規表示式做這件事:
引用
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

$smarty
->assign('articleTitle',
                
"Blind Woman Gets <font face=\"helvetica\">New
Kidney</font> from Dad she Hasn't Seen in <b>years</b>."
               
);

?>

模版寫成:
引用
{$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:

傷腦筋,如果我改成這樣,對其他編碼的人會有問題嗎?沒有問題我才能加到 SVN 中。

Mark
hi 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