엑셀다운로드 시 html소스 깨짐

엑셀다운로드 시 html소스 깨짐

QA

엑셀다운로드 시 html소스 깨짐

답변 1

본문

고수님들의 조언이 필요합니다.

$worksheet->write($i, 1, $row['content']);

이렇게 다운로드할 때 

해당 내용이

<p> </p><br><p><br><span style="font-size: 14pt;">측정방법에 따라 치수에 약간의 오차가 있을 수 있으며</span><br><span style="font-size: 14pt;">색상은  모니터의 사양과 해상도에 따라 다르게 보일 수 있습니다.</span></p><p> </p><div><img src="https://cdn-pro-web-221-228.cdn-nhncommerce.com/data/editor/goods/211116/a34fc7f9e0f23b2573c804845f4f0cff_113651.jpg" title="a34fc7f9e0f23b2573c804845f4f0cff_113651.jpg" alt="a34fc7f9e0f23b2573c804845f4f0cff_113651.jpg" class="js-smart-img"><br style="clear:both;"><br style="clear:both;"><br>

일 경우 엑셀로 다운로드 하면, <p> </p><br><p><br><span style="font-size: 14pt;">측정방법에 따라 치수에 약간의 오차가 있을 수 있으며</span><br><span style="font-size: 14pt;">색상은  모니터의 사양과 해상도에 따라 다르게 보일 수 있습니다.</span></p><p> </p><div><img src="https:

까지만 다운로드 됩니다.

즉 // 부터 다운로드가 안됩니다.

어떻게 처리하면 좋을까요? //로 \/\/ 바꿔도 봤고, htmlspecialchars도 사용해봤는데, 소용이 없네요~

 

고수님들의 고언 부탁 드려요~

이 질문에 댓글 쓰기 :

답변 1

질문의 내용으로만 본다면 다음과 같이 해 볼 수 있지 않을까 생각합니다.

 

다운로드할 때 해당 내용이 일부만 다운로드되는 문제가 발생하는 경우, HTML 태그나 특수 문자로 인해 다운로드가 중단될 수 있습니다. 이러한 경우에는 특수 문자를 이스케이프하거나 HTML 태그를 제거하면 되지 않을까 합니다.


$content = strip_tags($row['content']); // HTML 태그 제거
// 특수 문자 이스케이프
$content = str_replace('\\', '\\\\', $content); // 백슬래시(\) 이스케이프 처리
$content = str_replace('"', '\"', $content); // 큰따옴표(") 이스케이프 처리
$content = str_replace("\r", '', $content); // 캐리지 리턴 제거
$content = str_replace("\n", '\n', $content); // 개행문자(\n) 이스케이프 처리
$worksheet->write($i, 1, $content);

 

strip_tags 함수는 HTML 태그를 제거하는 역할을 하므로 이를 통해 다운로드될 내용에서 HTML 태그를 제거할 수 있습니다.

str_replace 함수를 사용하여 특수 문자를 이스케이프 처리하면 다운로드 시 특수 문자가 정상적으로 처리되어 전체 내용을 다운로드할 수 있을 것 으로 생각합니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 16,822
© SIRSOFT
현재 페이지 제일 처음으로