[分享]解決PO文在 functions_search.php 會出錯的問題

phpBB Installation & Usage Support
phpBB 2 安裝於各類型作業平台之問題討論;外掛問題,請到相關版面依發問格式發表!
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

版面規則
本區是討論關於 phpBB 2.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
主題已鎖定
ycl8000
星球普通子民
星球普通子民
文章: 12
註冊時間: 2007-03-01 09:27

[分享]解決PO文在 functions_search.php 會出錯的問題

文章 ycl8000 »

我先說一下我的環境:

作業系統: windows XP 繁體中文版
PHP版本:4.4.6
資料庫: SQL 2000 繁體中文版
PHPBB版本: PHPBB2.0.22
Apache版本: Release 10337100
使用編碼: BIG5
沒有裝任何外掛.

基於某種原因,這個站必須使用BIG5編碼 + SQL2000資料庫,
然而這方面的資料很少,(比起MySQL的資料,少太多太多了).

首先我按照 Scorpion 發表的這一篇做多國這言的修正.
http://ibf.myweb.hinet.net/doc/phpBB2015_multilang.html

之後我發表新文章, 老是會在 functions_search.php 這邊出錯,
doraemonalex 有回一篇文章,裡面提到把註解拿掉即可.
http://phpbb-tw.net/phpbb/viewtopic.php?p=258233#258233

我測試的結果是,這樣雖然可以避掉這個問題,但是會影響搜尋功能 :-( ,
PO的文章之後會搜尋不出來, 可以看一下資料庫中的
phpbb_search_wordlist 資料表,裡面都是存字元.而不是關鍵字串.

我一步步的檢查,找出原因是出在functions_search.php 裡面的
function clean_words($mode, &$entry, &$stopword_list, &$synonym_list),
Big5的文字經過這段函式處理後,有些字會變亂碼,導致後續程式會出錯,

我試了很多方法,最後終於讓我解決了這個問題,試了二天才試出來,
超感動的 :mrgreen:

解決的原理是先把Big5的字串輚換成UTF-8格式, 讓 clean_words這個函式去處理,等處理完後,再轉回成Big5就OK了.

代碼: 選擇全部

修改方法如下:
開啟 /includes/functions_search.php

尋找 $entry = ' ' . strip_tags(strtolower($entry)) . ' ';

在之前加上 $entry = mb_convert_encoding ( $entry, 'utf-8','big5' );

尋找 return $entry;

在之前加上 $entry = mb_convert_encoding ( $entry, 'big5','utf-8' );

存檔
PS: php.ini 裡面要加掛 extension=php_mbstring.dll 才能使用 mb_convert_encoding 這個函式.
主題已鎖定

回到「phpBB 2 安裝與使用」