各位好\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 中文版
[問題]關於 split_words 函式的「無字天書」
版主: 版主管理群
版面規則
本區是討論關於 phpBB 2.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
本區是討論關於 phpBB 2.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
[問題]關於 split_words 函式的「無字天書」
最後由 brentsu 於 2005-01-18 07:10 編輯,總共編輯了 1 次。
請教高手!請問這個 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 中文版
$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 中文版
