2013-02-11 44 views
1

我的服務器上的PHP 5.3運行,現在我需要更換這個電話轉給EREG:等效額日格()的調用

if (ereg("/$", $pref) === FALSE) 
{ 
    $pref .= '/'; 
} 

我曾經嘗試這樣做,除其他事項外,沒有任何成功:

if (preg_match('~/$~', $pref) === FALSE) 

這導致http://example.com/index.phpwww/browse 如果它有什麼區別,這是我繼承的CodeIgniter 1.6.1應用程序。

我嘗試這樣做:

if (ereg("/$", $pref) === 0) 

爲@PeterM建議,現在要http://example.com帶我到http://example.com/index.php/www/browse,但給我的消息「URI您提交已禁用的字符。」這是一個有效的CodeIgniter網址嗎?也許我在代碼中的其他地方弄錯了什麼?

我改變笨/應用/配置/ config.php文件的行126是:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-'; 

,我仍然得到消息。

回答

3

將其與0進行比較,而不是falsepreg_match返回匹配數。它僅在出錯時返回false

+0

我做到了,現在要http://example.com帶我到http://example.com/index.php/www/browse,但給我的信息是「你提交的URI不允許使用字符。」我會更新我的問題。 – 2013-02-11 19:54:05

+0

看起來還有其他一些問題比賽。試試var_dump吧 – 2013-02-11 19:55:06

+0

好吧,我會試試看。 – 2013-02-11 20:01:59

2
if(substr($pref, -1) !== '/'){ 

} 

OR:

if($pref[strlen($pref)-1] !== '/'){ 
//not found 
} 
+0

字符串的末尾應該如何包含布爾值false? OP想要在行尾檢查'/',而不是錯誤的。 – 2013-02-11 19:37:52

+0

@MarcB:哦,對,編輯。 – 2013-02-11 19:42:05

+0

編輯的答案適用於我。 – 2013-02-11 22:49:08