글자 자르기할 때 태그가 안잘리게 하려면 어떻게 해야하나요?
본문
안녕하세요. 그누보드를 이용해서 블로그를 만들고 있습니다.
리스트에서 내용을 출력하는 데 WP 처럼 상단 일부 내용만 출력하고 나머지는 뷰페이지에서 보게끔 하려고 합니다.
str_cut을 이용해서 100자로 컷하면 wr_content가 100자까지 표시되긴 하는데
마지막에 닫는 태그가 </.... 라던지 </p.... 로 잘려서 페이지 소스가 꼬이는 현상이 있습니다.
WP 처럼 태그 잘림없이 일부 단락? 문단?만 보여주려면 어떻게 해야할까요?
답변 5
echo preg_replace('#</?[^>]+$(?!>)#', '', cut_str($str, 100));
슈와이님의 방법이 제일 쉬운데요
비슷하지만 다른 방법으로 HTML entities 을 검색해보셔도 도움되실거에요
쉽게 말해서 html 에 영향을 받지 않는 문자 입니다.
원문 : HTML CODE <b>bold</b>
HTML entities : HTML CODE <b>bold</b>
태그 자체가 깨지는 것도 문제지만
<div>contents out<div>contents in<div>contents in in</div></div></div>
처럼 노드구조가 깨지는 문제도 생길것 같네요.
리스트에서 html 태그가 필요치 않다면
strip_tags 같은 함수로 태그자체를 제거 한다음
연산을 하는 것이 낫지 않나 싶습니다.
아니면 정규식 이나 DOM 관련 파싱으로의 추가작업이 필요할것 같습니다.
스타일을 유지시키고 싶다면 CSS 의 text-overflow 속성을 사용하는 방법도 있습니다.
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
.more {
border: 1px solid orange;
white-space: nowrap;
width: 5.0em;
height: 1.0em;
overflow: hidden;
text-overflow: ellipsis;
/* text-overflow: clip; */
}
</style>
</head>
<body>
<div class="more">
1<font color="#e67e22">23<b>4</b></font><b>5<i>6</i></b><i>78</i>90<div>1234<font color="#e67e22">567</font>890</div><div>1234567<font color="#e67e22">890</font></div>
</div>
</body>
</html>
답변해주신 세 분께 정말 진심으로 감사드립니다.
제가 원했던 답변은 wr_content에 에디터로 작성한 글 내용 중 <p></p> 열린 태그와 닫는 태그를 유지하고 글 내용 일부분만 잘라서 보여주는 것이었습니다.
모두 채택드리고 싶었지만 그래도 먼저 답변 해주신 슈와이님께 채택드렸습니다.
감사합니다.