글자 자르기할 때 태그가 안잘리게 하려면 어떻게 해야하나요?
안녕하세요. 그누보드를 이용해서 블로그를 만들고 있습니다.
리스트에서 내용을 출력하는 데 WP 처럼 상단 일부 내용만 출력하고 나머지는 뷰페이지에서 보게끔 하려고 합니다.
str_cut을 이용해서 100자로 컷하면 wr_content가 100자까지 표시되긴 하는데
마지막에 닫는 태그가 </.... 라던지 </p.... 로 잘려서 페이지 소스가 꼬이는 현상이 있습니다.
WP 처럼 태그 잘림없이 일부 단락? 문단?만 보여주려면 어떻게 해야할까요?
답변 5개 / 댓글 6개
echo preg_replace('#</?[^>]+$(?!>)#', '', cut_str($str, 100));
답변에 대한 댓글 3개
스타일을 유지시키고 싶다면 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>
태그 자체가 깨지는 것도 문제지만
<div>contents out<div>contents in<div>contents in in</div></div></div>
처럼 노드구조가 깨지는 문제도 생길것 같네요.
리스트에서 html 태그가 필요치 않다면
strip_tags 같은 함수로 태그자체를 제거 한다음
연산을 하는 것이 낫지 않나 싶습니다.
아니면 정규식 이나 DOM 관련 파싱으로의 추가작업이 필요할것 같습니다.
슈와이님의 방법이 제일 쉬운데요
비슷하지만 다른 방법으로 HTML entities 을 검색해보셔도 도움되실거에요
쉽게 말해서 html 에 영향을 받지 않는 문자 입니다.
원문 : HTML CODE <b>bold</b>
HTML entities : HTML CODE <b>bold</b>
답변을 작성하려면 로그인이 필요합니다.