2012-01-24 67 views
0

我有$ user數組包含特殊字符的數據。看起來像$ user的每個元素都包含特殊字符後,它們存儲在會話中後無法正確呈現。如何管理存儲在數組中的HTML特殊字符

這裏是我的代碼:

<?php 
session_start(); 

include_once('../application/classes/DataLayer.class.php'); 

    $dl = new DataLayer(); 
    $user = $dl->doLogin($_POST['email_sub'], $_POST['password_sub']); 

    if(isset($user)) { 
      foreach($user as $detail_array => $detail){ 
      $fn = html_entity_decode($user['fn']);  
      $ln = html_entity_decode($user['ln']);  
     } 
     var_dump($fn, $ln); // $fn and $ln display well here 

     $_SESSION['user'] = $user; 
     $_SESSION['fn'] = $fn; 
     $_SESSION['ln'] = $ln; 
     var_dump($_SESSION['fn'], $_SESSION['ln']); // $_SESSION['fn'], $_SESSION['ln'] display well here too 
    } 
    else { 
    //do something here 
    } 
?> 

任何幫助,將不勝感激。對不起,我的英語不好。

回答

0

從這個鏈接https://stackoverflow.com/a/8454838/997178使用功能對數據進行編碼並輸出
使用encode_output_vars功能,PARAM $瓦爾是您的會話數據...返回值將是或編碼輸出單個元素與編碼的所有元素的數組,取決於你的參數是什麼。
或者只是在輸出會話數據之前使用php函數htmlentities。這裏是鏈接http://php.net/manual/en/function.htmlentities.php

+0

感謝您的快速回答,功能運作良好。使用var_dump()函數我得到了:&Atilde; ©&Atilde; gl30。唯一的問題是,html_entity_decode(&Atilde; ©&Atilde; ¢ gl)會給我這個字符串「éâgl」,但最終會給我「ââÂ」gl「。我錯過了什麼。 (我正在使用meta ) – Lomse

+0

嘗試設置相同的字符集「iso-8859-1」 html實體解碼函數...它的第三個參數...該函數的默認字符集是UTF-8。在這裏閱讀更多關於這個功能http://php.net/manual/en/function.html-entity-decode.php。 – Tudor

+0

工作很好。謝謝 – Lomse