글자 자르기할 때 태그가 안잘리게 하려면 어떻게 해야하나요?

글자 자르기할 때 태그가 안잘리게 하려면 어떻게 해야하나요?

QA

글자 자르기할 때 태그가 안잘리게 하려면 어떻게 해야하나요?

본문

안녕하세요. 그누보드를 이용해서 블로그를 만들고 있습니다.


리스트에서 내용을 출력하는 데 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> 열린 태그와 닫는 태그를 유지하고 글 내용 일부분만 잘라서 보여주는 것이었습니다.

모두 채택드리고 싶었지만 그래도 먼저 답변 해주신 슈와이님께 채택드렸습니다.

감사합니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 6
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT