테스트 사이트 - 개발 중인 베타 버전입니다

php 엑셀 다운로드시 < > 안의 내용 지워지는 문제 채택완료

안녕하세요.

 

게시판 테이블을 엑셀로 다운로드를 받고 있는데 내용에 < > 부분이 있으면 해당 내용이 지워진 상태에서 다운로드가 됩니다.

 

어떻게 해결을 하면 될까요?

 

* 예시

- 글제목(원본) : 다음 중 <서울>에 속하는 지역은?

- 엑셀 다운로드시 : 다음 중 에 속하는 지역은?

- 엑셀 관련 코드를 지우고 html로 보았을때는 제대로 나오지만 엑셀로 다운로드 했을때는 < > 와 함께 안의 내용이 지워집니다.

 

$list 관련 소스에서 치환하거나 그런건 없습니다.

 

엑셀 다운로드 관련 소스

 

</p>

<p><?php</p>

<p>    header("Content-type: application/vnd.ms-excel" );

    header("Content-Disposition: attachment; filename={$tmp_file_name}.xls" );

    header("Content-Description: PHP4 Generated Data" );

    header("Expires: 0");

    header("Cache-Control: must-revalidate, post-check=0,pre-check=0");

    header("Pragma: public");</p>

<p>// 대충 $list 관련 소스 반목문으로 불러옴</p>

<p>?>></p>

<p> </p>

<p>    <meta http-equiv="content-type" content="text/html; charset=<?=$g4['charset']?>">

    <style>

        td { mso-number-format:\@; }

        br{mso-data-placement:same-cell;}

    </style>

    <table border="1" cellpadding='5'><?php echo $list?><table></p>

<p> </p>

<p>

 

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트

</p>

<p><?php

$tmp_file_name = 'test';</p>

<p>    header("Content-type: application/vnd.ms-excel" );

    header("Content-Disposition: attachment; filename={$tmp_file_name}.xls" );

    header("Content-Description: PHP4 Generated Data" );

    header("Expires: 0");

    header("Cache-Control: must-revalidate, post-check=0,pre-check=0");

    header("Pragma: public");</p>

<p>$g4 = ['charset' => 'utf-8'];

$lists = [

    ['subject' => '다음 중 <서울>에 속하는 지역은?', 'content' => '1'],

    ['subject' => '다음 중 [서울]에 속하는 지역은?', 'content' => '2'],

    ['subject' => '다음 중 {서울}에 속하는 지역은?', 'content' => '3'],

    ['subject' => '다음 중 (서울)에 속하는 지역은?', 'content' => '4'],

    ['subject' => '다음 중 서울에 속하는 지역은?', 'content' => '5'],

];</p>

<p>$list = '';

foreach ($lists as $row) {

    $subject = htmlspecialchars($row['subject']);

    $content = $row['content'];</p>

<p>    $list .= <<<HEREDOC

    <tr>

        <td>{$subject}</td><td>{$content}</td>

    </tr>

    HEREDOC;

}</p>

<p>?>

  <meta http-equiv="content-type" content="text/html; charset=<?=$g4['charset']?>">

    <style>

        td { mso-number-format:\@; }

        br{mso-data-placement:same-cell;}

    </style>

    <table border="1" cellpadding='5'><?php echo $list?><table></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

감사합니다.
htmlspecialchars 적용하니 잘 나오네요!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인

전체 질문 목록

🐛 버그신고