[問題]關於 split_words 函式的「無字天書」

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

版主: 版主管理群

版面規則
本區是討論關於 phpBB 2.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
主題已鎖定
頭像
brentsu
星球公民
星球公民
文章: 232
註冊時間: 2004-08-23 09:08
來自: BNW 時尚資訊網
聯繫:

[問題]關於 split_words 函式的「無字天書」

文章 brentsu »

各位好\r

因為我的討論區原本是不能貼中文,只能貼英文的文章!
在找遍以前的討論之後,發現要修改 includes\functions_search.php 裡面的這個分割文字的函式:

function split_words(&$entry, $mode = 'post')
{
// If you experience problems with the new method, uncomment this block.

$rex = ( $mode == 'post' ) ? "/\b([\w接-][\w接-']*[\w接-]+|[\w接-]+?)\b/" : '/(\*?[a-z0-9接-]+\*?)|\b([a-z0-9接-]+)\b/';
preg_match_all($rex, $entry, $split_entries);

return $split_entries[1];

// Trim 1+ spaces to one space and split this trimmed string into words.
return explode(' ', trim(preg_replace('#\s+#', ' ', $entry)));
}

前面的程式原本是被 comment 掉,使用最後新的 explode 方式,來傳回空格分割的單字。

但不幸的,這會使得我的 phpBB 沒辦法貼中文,一輸入中文字就出錯!目前是暫時解決了,只要拿掉上面的註解,讓程式跑前面的三個指令就行了。

那我的問題是什麼?是這個:

$rex = ( $mode == 'post' ) ? "/\b([\w接-][\w接-']*[\w接-]+|[\w接-]+?)\b/" : '/(\*?[a-z0-9接-]+\*?)|\b([a-z0-9接-]+)\b/';

請問為什麼會有一堆的「接」?這個語法是做什麼用的?
用 UltraEdit 解讀,原來是使用 B1 B5 .... 但是為什麼呢?

00000da0h: 29 09 0A 09 24 72 65 78 20 3D 20 28 20 24 6D 6F ; )...$rex = ( $mo
00000db0h: 64 65 20 3D 3D 20 27 70 6F 73 74 27 20 29 20 3F ; de == 'post' ) ?
00000dc0h: 20 22 2F 5C 62 28 5B 5C 77 B1 B5 2D FF 5D 5B 5C ; "/\b([\w接-][\
00000dd0h: 77 B1 B5 2D FF 27 5D 2A 5B 5C 77 B1 B5 2D FF 5D ; w接-']*[\w接-]
00000de0h: 2B 7C 5B 5C 77 B1 B5 2D FF 5D 2B 3F 29 5C 62 2F ; +|[\w接-]+?)\b/
00000df0h: 22 20 3A 20 27 2F 28 5C 2A 3F 5B 61 2D 7A 30 2D ; " : '/(\*?[a-z0-
00000e00h: 39 B1 B5 2D FF 5D 2B 5C 2A 3F 29 7C 5C 62 28 5B ; 9接-]+\*?)|\b([
00000e10h: 61 2D 7A 30 2D 39 B1 B5 2D FF 5D 2B 29 5C 62 2F ; a-z0-9接-]+)\b/
00000e20h: 27 3B 0A 09 70 72 65 67 5F 6D 61 74 63 68 5F 61 ; ';..preg_match_a
00000e30h: 6C 6C 28 24 72 65 78 2C 20 24 65 6E 74 72 79 2C ; ll($rex, $entry,

雖然現在可以貼中文,但是「搜尋文章」的功能並不正常,想來是跟這段切割程式有關.....

●架設主機作業系統:Windows Server 2003
●您安裝的程式:php 5.0
●您的 phpBB2 版本:phpBB 2.0.10 + MS SQL Server 2000 中文版
最後由 brentsu 於 2005-01-18 07:10 編輯,總共編輯了 1 次。
頭像
brentsu
星球公民
星球公民
文章: 232
註冊時間: 2004-08-23 09:08
來自: BNW 時尚資訊網
聯繫:

文章 brentsu »

請教高手!請問這個 php 指令是什麼意思呢?

$rex = ( $mode == 'post' ) ? "/\b([\w接-][\w接-']*[\w接-]+|[\w接-]+?)\b/" : '/(\*?[a-z0-9接-]+\*?)|\b([a-z0-9接-]+)\b/';

我只看得懂是用精簡的 ? 邏輯指令來設定 $rex 變數,當 $mode 等於 post 的時候........

可是後面的 [\w接-] 或是 [a-z0-9接-]這個到底是什麼意思?不懂!

●架設主機作業系統:Windows Server 2003
●您安裝的程式:php 5.0
●您的 phpBB2 版本:phpBB 2.0.10 + MS SQL Server 2000 中文版
頭像
brentsu
星球公民
星球公民
文章: 232
註冊時間: 2004-08-23 09:08
來自: BNW 時尚資訊網
聯繫:

文章 brentsu »

看來這個問題到最新的 2.0.11 還是無解!原版還是不能貼中文啊~~~ 空有一個【中文語系】而已...... 唉.....

每架一個新的討論區就得東改西改...... 難道沒有網友提供一個【 2.0.11 中文標準版 】嗎?
主題已鎖定

回到「phpBB 2 安裝與使用」