2010-04-03 6 views
1

html이 포함 된 파일을 포함한다고 가정 해 봅시다. html에는 느낌표 기호, 스페인어 악센트 (á, ó)가 있습니다. 구문 분석 된 포함 된 텍스트는 올바른 값 대신 기호로 처리됩니다. 이것은 FF에서는 발생하지만 IE (8)에서는 발생하지 않습니다.입력을 HTML 문자로 올바르게 변환하는 방법

나는 시도는 다음과 같은 기능 :

반드시 htmlspecialchars,를 htmlentities, utf8_encode

include htmlentities("cont/file.php"); 

샘플 file.php 내용 :

<div>Canción, “Song Name”</div> 

출력 :

Canci�n, �Song Name� 

답변

0

이 결국 무엇인가 두 개의 서로 다른 코드에서 작업하고 트릭을 수행합니다. 그 이유는 알기가 어렵지 만 파싱으로 뭔가.

이 브라우저는 (FF + IE) 보여 주었다 ->

alt text http://i77.photobucket.com/albums/j65/speedcoder/4-3-20101-22-31PM.png

샘플 ** ('포함'기능을 사용하지, 그래서 출력은 버퍼가 필요하지 않음) :

<?php 
$varr = '<div>ääääääó</div>'; 
echo utf8_encode($varr); 
?> 

이 하나가 나를 위해 작동하지 않았다 :

<?php 
    include "test.php"; 
?> 

위 샘플에서 포함 파일 w 적어도 나를 위해 문자를 변환하지 않은 HTML 코드. 파일을 포함하지 않고 utf8_encode로 작업했지만, 문제는 내 코드가 din't 함수를 포함하는 함수를 사용하는 곳에서 필요하다는 것입니다.

아래의 다음 샘플에서는 utf8_encode 인코딩이 실행되기 전에 코드를 렌더링하고 구문 분석 할 수있는 메서드 및 출력 버퍼를 사용합니다.

내 코드 시나리오 (내 특정 시나리오 파일도 먼저 분석해야 할 코드가 포함되어 포함하기 때문에 산부인과와 함께하는 경우) : 나를 "드레이을 알아낼 돕는

ob_start(); 
include ("cont/file.php"); 
$content = ob_get_contents(); 
ob_end_clean(); 
echo utf8_encode($content); 

감사합니다 Slinták " !!!

2

코드는 htmlentities()를 통해 "cont/fie.php"문자열을 실행하는 것 외에는 아무런 영향을 미치지 않습니다. 파일 내용은 그 영향을받지 않습니다.

0

echo htmlentities(file_get_contents("cont/file.php")); 아마도 당신이 묻고있는 것입니다.
그러나 앞에서 언급했듯이 htmlentities는 사용하지 말고 UTB-8 인코딩을 사용해야합니다.

+0

include 전에 include 문자를 검색하고 html 엔티티로 변환하면됩니다. – Codex73

+0

@ Codex73 이미 utf-8을 사용하고 있고 utf-8에서'reallyly'라는 텍스트를 사용하고 있다면 엔티티로 변환 할 문자가 필요하지 않습니다. 그냥 htmlentities 멀리 던져 –

2

이 콘텐츠를 보는 HTML 페이지에서 인코딩을 UTF-8로 설정해야합니다. htmlentities은이 텍스트에 전혀 영향을 미치지 않습니다.

나는 코드를 다음과 같은 물건을 시도하고 괜찮 았는데 :

index.php를

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
     <title>TODO supply a title</title> 
    </head> 
    <body> 
     <p> 
      TODO write content 


      <?php 
       include "test.php"; 
      ?> 

      </p> 
    </body> 
</html> 

test.php

<div>ääääääó</div> 
+0

나는 이것을 사용하고 있습니다 : Codex73

+0

브라우저의 인코딩을 확인해보십시오. 어쩌면 뭔가 다른 이유로 설정되어있을 수 있습니다. 난 당신의 코드를 시도하고 괜찮 작동합니다. 나는 시도한 코드로 내 게시물을 편집 할 것이다. –

+0

FF로만 발생하는 경우 브라우저 인코딩으로 페이지 인코딩을 다시 작성하지 않겠습니까? 다른 브라우저를 사용해 볼 수도 있습니까? 그냥 FF로 넘어서서 PHP 측 결함이 아닌지 확인하십시오. –

관련 문제