在 phpBB2 的時候就有發現這問題了,當時並沒有想去解決這問題,然而至今到了 phpBB3,依然出現這問題,不過我想這是因為中文網址的盛行,以及像 Wiki 之類都會有中文標籤,例如:一分鐘教室-userChrome.css,解決方法可以透過 urlencode 函式來處理掉網址編碼問題,在 phpBB 處理文章儲存,會先經過 bbcode 的處理,將 **** 標籤,會經過 get_preg_expression(‘url’) 這函式的驗證,看 url 是否合法,當然如果網址列有中文就不可能通過,所以必須在網址驗證之前,把網址編碼過,通過驗證之後再把網址解碼,這樣就沒問題了,底下為安裝步驟 打開 includes/message_parser.php 找尋
function validate_url($var1, $var2)前面加入
/** * url encode * * @param string $string http url */ function encode_url($string) { $entities = array('%21', '%2A', '%27', '%28', '%29', '%3B', '%3A', '%40', '%26', '%3D', '%2B', '%24', '%2C', '%2F', '%3F', '%25', '%23', '%5B', '%5D'); $replacements = array('!', '*', "'", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]"); return str_replace($entities, $replacements, urlencode($string)); }找尋
validate_url 函式
$url = ($var1) ? $var1 : $var2;後面加入
// encode url $url = $this->encode_url($url);找尋
return ($var1) ? '='.$this->bbcode_specialchars($url).':'.$this->bbcode_uid.'' . $var2 . '[/url:' . $this->bbcode_uid . ']' : ':'.$this->bbcode_uid.'' . $this->bbcode_specialchars($url) . '[/url:' . $this->bbcode_uid . ']';取代
return ($var1) ? '='.$this->bbcode_specialchars($url).':'.$this->bbcode_uid.'' . $var2 . '[/url:' . $this->bbcode_uid . ']' : ':'.$this->bbcode_uid.'' . urldecode($this->bbcode_specialchars($url)) . '[/url:' . $this->bbcode_uid . ']';測試結果,請參考此網址:
See also
- 來聊聊 PHP & JavaScript & CSS 的 Coding Style
- 為什麼我選擇使用 Laravel Framework?
- Laravel 搭配 Google, Facebook, Twitter 第三方 OAuth 認證
- 將 wordpress 強制使用 SSL 連線
- PHP 7 vs HHVM Benchmark 比較
- Laravel 50 個小技巧 + Laravel 5.2 新功能
- Laravel Homestead 支援 MySQL 5.7 和 Node 5.0
- PHP-FIG 新網站
- Laravel Homestead 支援 PHP 7
- Laravel 5.1 is released