2015-01-08 59 views
-1

我使用的電子郵件地址有這樣的代碼:PHP不會自動編碼「@」到「 - 」

$a = "[email protected]"; 
$b = 'b%40b.com'; 
$c = urldecode($b); 

echo ($a . ' ' . $c); 

在瀏覽器中正確顯示這兩個變量:[email protected]

但如果我在服務器上使用$ a或$ c作爲用戶名來讀取用戶的帳戶,我會收到錯誤,因爲它們的值是:b — b.com(刪除空間)。

如果我使用調試器在第一行代碼後立即檢查$ a的值,那麼它顯示$ a已經具有「b — b.com」值。所以沒有額外的步驟可以編碼它。

請注意,—不是@符號的html代碼,而是破折號( - )的代碼。

我試過str_replace(),但它不起作用。

PHP版本5.3.8

更新:這是一個錯誤調試器,他們說他們會解決。感謝名單。

+0

顯示代碼,你在哪裏_「讀取用戶的帳戶」_。 – CodeCaster

+0

@CodeCaster我使用YII框架,所以代碼僅僅是:$ USR1 = ar_usr1 ::模型() - > findByAttributes(陣列( \t \t \t \t '用戶名' \t => \t $ C, \t \t \t) );但是變量的值在分配之後已經立即改變(在閱讀記錄之前很久)。 –

+1

更新:這是一個調試器錯誤,他們表示他們會修復。感謝名單。 –

回答

0

好的,我發現它仍然在控制器內部工作 - 雖然調試器顯示'@'的值爲'—'。

但它仍然很奇怪。也許這只是一個調試器問題,因爲一切看起來都很好。感謝名單。

更新:這是一個調試器錯誤,他們說他們會修復。感謝名單。