php 엑셀 다운로드시 < > 안의 내용 지워지는 문제
본문
안녕하세요.
게시판 테이블을 엑셀로 다운로드를 받고 있는데 내용에 < > 부분이 있으면 해당 내용이 지워진 상태에서 다운로드가 됩니다.
어떻게 해결을 하면 될까요?
* 예시
- 글제목(원본) : 다음 중 <서울>에 속하는 지역은?
- 엑셀 다운로드시 : 다음 중 에 속하는 지역은?
- 엑셀 관련 코드를 지우고 html로 보았을때는 제대로 나오지만 엑셀로 다운로드 했을때는 < > 와 함께 안의 내용이 지워집니다.
$list 관련 소스에서 치환하거나 그런건 없습니다.
엑셀 다운로드 관련 소스
<?php
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");
// 대충 $list 관련 소스 반목문으로 불러옴
?>>
<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>
!-->
답변 1
<?php
$tmp_file_name = 'test';
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");
$g4 = ['charset' => 'utf-8'];
$lists = [
['subject' => '다음 중 <서울>에 속하는 지역은?', 'content' => '1'],
['subject' => '다음 중 [서울]에 속하는 지역은?', 'content' => '2'],
['subject' => '다음 중 {서울}에 속하는 지역은?', 'content' => '3'],
['subject' => '다음 중 (서울)에 속하는 지역은?', 'content' => '4'],
['subject' => '다음 중 서울에 속하는 지역은?', 'content' => '5'],
];
$list = '';
foreach ($lists as $row) {
$subject = htmlspecialchars($row['subject']);
$content = $row['content'];
$list .= <<<HEREDOC
<tr>
<td>{$subject}</td><td>{$content}</td>
</tr>
HEREDOC;
}
?>
<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>
답변을 작성하시기 전에 로그인 해주세요.