2011-12-02 5 views
0

특수 문자가 "á"이고 htmlcode가 "<input type='text' />"인 문자열이 있습니다. 내 DB에이 문자열을 저장할 때 나는 htmlentities($string, ENT_QUOTES);을 사용합니다. 문제는 텍스트를 출력 할 때 html_entity_decode($string_from_db, ENT_QUOTES)을 사용하고 글자의 경우 "&aacute;", htmlcode의 경우 "<input type='text' title="LA1&qu..."과 같이 데이터베이스에있는 모든 엔티티를 변환합니다. 따라서 내 출력에는 "á"문자와 정상이 아닌 텍스트 필드가 표시됩니다. 나는 그 편지를 그렇게하고 싶지만 현장에서는 코드 "<input type='text' />"을 실제 필드가 아니라 보여주고 싶다.html 엔티티를 제외한 모든 엔티티를 디코딩하는 방법

사용자 입력이 많은 다국어 사이트에이 기능이 필요하므로 특수 문자를 올바르게 처리 할 수 ​​있어야하며 잘못된 입력을 보호해야합니다. 모든 조언은 크게 평가됩니다.

답변

0

글쎄, 나는 그것을 알아 낸 것 같아. 적어도 지금은. 여기에 내가 뭘하는지입니다 :

  1. 의 I는 그것을 소독 사용자에 의해 제출 된 텍스트 :

    function sanitize_form_input($string) { 
        $string = mysql_real_escape_string($string); 
        return $string; 
    } 
    
  2. 있어 페이지 인코딩, PHP는 인코딩, HTML 인코딩, MySQL의 인코딩 ...하고는 인코딩이 UTF-8로 설정된 다른 가능한 것.

  3. 출력과 텍스트 :

    function sanitize_db_output($string) { 
        return htmlentities(stripslashes($string), ENT_QUOTES, 'UTF-8'); 
    } 
    

이 그것을 할 수있는 잘못된 방법이 있으면 알려 주시기 바랍니다.

+0

왜 스트립 슬래시를하고 있습니까? 그리고 당신의 코드는 엔티티로 모든 문자를 보여주지 않을 것입니다, 당신은 당신이 내 대답에 대한 코멘트에 원하지 않는다고 말했습니까? 내 대답은 당신을 위해 일해야한다고 생각합니다 ... – codeling

0

html_entity_decode 이후에 추가로 htmlspecialchars을 추가 할 수 있습니다. 이 기능은 자신의 엔티티 HTML에서 특별한 기능을 가지고 문자를 변환합니다 :

htmlspecialchars(html_entity_decode($string_from_db, ENT_QUOTES), ENT_QUOTES) 

는 결과 문자열이 더 인코딩되지 않은 HTML 문자가없는주의를 기울여야한다 그. 물론, 성능면에서, 아마도 최상의 해결책은 아니지만 간단합니다!

+0

글자도 변환되기 때문에 도움이되지 않습니다. | –

+0

죄송합니다.'htmlspecialchars'을 (를) 사용하려고합니다 ... – codeling

관련 문제