스레드
이온디

#엘카북 #마이로그 #서명

원본 코드

@php
    $signature = $_member_info->signature ?? '';
    $signature = str_ireplace(['<\/div>', '<\/p>', '<\/li>'], '
', $signature); $signature = preg_replace('/<(?!br\s*\/?)[\s\S]*?>|^(?:\s| |
)+|(?:
| |\s)+$/uis', '', $signature); $signature = preg_replace('/(\s*)+/ius', '
', $signature); @endphp @if(strlen($signature))

{$signature}

@endif


설명

  • 닫는 태그(
,

, )를
로 변경
  • HTML 태그(단
    제외), 앞뒤 공백 제거
  • 연속된
    을 하나로 줄임
  • 서명이 존재하면
    태그 안에 출력
  • 이렇게 하면 서명이 깨끗하게 정리된 상태로 출력되며, HTML이 남지 않고 줄 바꿈이 유지됩니다.

    궁금한점

    PHP에는 HTML을 제거하는 함수도 있는데 왜 저렇게 사용한 걸까요?


    예제1)

    $signature = $_member_info->signature ?? '';

    $signature = strip_tags($signature);

    $signature = trim($signature); // 앞뒤 공백 제거

    echo $signature;


    예제2)

    $signature = $_member_info->signature ?? '';

    $signature = strip_tags($signature);

    $signature = html_entity_decode($signature, ENT_QUOTES | ENT_HTML5, 'UTF-8');

    $signature = trim($signature);

    echo $signature;


    html_entity_decode()를 사용하면  , <, > 같은 HTML 엔터티도 변환됩니다.

    기존 코드에서 br 태그만 살리고 싶다면

    @php
        $signature = $_member_info->signature ?? '';
    
        // 
    ,

    , 를
    로 변경 (백슬래시 제거) $signature = str_ireplace(['', '

    ', ''], '
    ', $signature); //
    태그만 남기고 나머지 HTML 태그 제거 $signature = preg_replace('/<(?!br\s*\/?)[^>]+>/i', '', $signature); // 불필요한 공백,  , 여러 개의
    를 하나의
    로 정리 $signature = preg_replace('/^(?:\s| |)+|(?:| |\s)+$/iu', '', $signature); $signature = preg_replace('/(\s*)+/iu', '
    ', $signature); @endphp @if(strlen($signature))

    {!! $signature !!}

    @endif
    0 좋아요 0 답글 342 조회