2016-11-07 4 views
-1

두 개의 PHP 파일이 있는데이 페이지의 데이터베이스에서 데이터를 가져 와서 print_r을 사용하여 표시하면 두 페이지 모두 다른 방식으로 내용을 표시합니다.HTML 특수 문자가 제대로 표시되지 않습니다.

실제로 MySQL 데이터베이스의 문자열 앞에 htmlspecialchars을 사용하여 이스케이프 처리 한 일부 HTML 특수 문자가 있습니다.

나는 또한 page1.php를 언급 할

My ‘pop’ to display 

로 그것을

My ‘pop’ to display 

로 표시되지만 page2.php에 표시됩니다 page1.php에 표시 가져올 때 내 웹 페이지이며 print_r을 가지고 page2.php의 문제를 확인합니다. page2.php는 pson을 사용하여 데이터를 기록하지만 문제를 확인하기 위해 json_encode를 echo합니다.

+0

json_encode 함수를 실행하기 전에 utf8 형식 문제가 발생합니다. 따라서 utf8_encode를 사용하고 json_code를 실행하십시오. –

+2

"MySQL 데이터베이스에서 문자열 앞에 'htmlspecialchars'를 사용하여 이스케이프 처리했습니다." 글쎄, 네 문제가있어. ** 이렇게하지 마십시오 **. HTML 이스케이프 처리가 아닌 SQL 이스케이프 처리로 데이터를 삽입해야합니다. HTML 이스케이프는 페이지에 한 항목을 표시 할 때만 사용됩니다. – tadman

+0

시도했지만이 경우 utf8_encode가 작동하지 않습니다 –

답변

-1

마지막으로 해결책을 얻었습니다. 데이터베이스의 데이터가 이미 htmlspecialchars를 사용하여 조작 되었기 때문에 htmlspecialchars를 제거한 후에도 데이터를 수정할 수 없어서이 솔루션을 통해 모든 HTML 인코딩 문자를 원본으로 변환했습니다.

여기에 간단한 코드가 있습니다.

$input = "This is the ‘text’ I fetched"; 
$output = preg_replace_callback("/(&#[0-9]+;)/", function($m) { return mb_convert_encoding($m[1], "UTF-8", "HTML-ENTITIES"); }, $input); 
echo $output; 

referance에 : http://www.codewithasp.net/2016/11/html-entity-decode-to-original-php.html

는 또한 우리는 또한 사용할 수 있습니다

업데이트 html_entity_ tadman의 코멘트 후에 내가 발견 한 것과 동일한 것을 해독해라.

+0

[이미이 기능을 내장하고있는'html_entity_decode' 내장 함수가있을 때 사람들이 자신의 쓰레기를 쓰지 않도록하십시오.] (http://php.net/manual/en/function.html-entity-decode.php) . 1 단계는 코딩을 시작하지 않고 문서를 확인합니다. – tadman

+0

나는이 코드 조각이 같은 문서 링크에 있다고 생각한다. 방금 찾은 것을 사용했습니다. 어쨌든이 솔루션을 공유해 주셔서 감사합니다. 위의 대답에서 이것을 업데이트 할 것입니다. –

0

표시하려면이 코드를 사용하십시오.

$message = "My ‘pop’ to display"; 

echo htmlspecialchars($messge, ENT_QUOTES, 'UTF-8'); 
+0

입니다. 지금 htmlspecialchars를 사용하고 있지는 않지만 여전히 내 텍스트는 내 ‘ 팝업 ’으로 자동 변환됩니다. 그것이 데이터 정렬 문제입니까? 내 것은 utf8_general_ci입니다. –

+0

예 데이터베이스 정렬 문제입니다. 데이터베이스에 데이터를 삽입하면 mysql_real_escape_string 함수를 사용하여 html 문자를 건너 뜁니다. – Rajkeshar

+0

어떻게 수정할 수 있습니까? 다른 데이터 정렬을 사용해야합니까? –