원본 코드
@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이 남지 않고 줄 바꿈이 유지됩니다.
궁금한점
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(['