#엘카북 1개의 스레드 ✕ 해제
이온디
이온디 1년 전
#엘카북 #마이로그 #서명 원본 코드 @php $signature = $_member_info->signature ?? ''; $signature = str_ireplace(['<\/div>', '<\/p>', '<\/li>'], '<br />', $signature); $signature = preg_replace('/<(?!br\s*\/?)[\s\S]*?>|^(?:\s|&nbsp;|<br \/>)+|(?:<br \/>|&nbsp;|\s)+$/uis', '', $sig… #엘카북 #마이로그 #서명 원본 코드 @php $signature = $_member_info->signature ?? ''; $signature = str_ireplace(['<\/div>', '<\/p>', '<\/li>'], '<br />', $signature); $signature = preg_replace('/<(?!br\s*\/?)[\s\S]*?>|^(?:\s|&nbsp;|<br \/>)+|(?:<br \/>|&nbsp;|\s)+$/uis', '', $signature); $signature = preg_replace('/(<br\s*\/?>\s*)+/ius', '<br />', $signature); @endphp @if(strlen($signature)) <div class="signature li"><p class="ib">{$signature}</p></div> @endif 설명 닫는 태그(</div>, </p>, </li>)를 <br />로 변경HTML 태그(단 <br /> 제외), 앞뒤 공백 제거연속된 <br />을 하나로 줄임서명이 존재하면 <div> 태그 안에 출력이렇게 하면 서명이 깨끗하게 정리된 상태로 출력되며, 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()를 사용하면 &nbsp;, &lt;, &gt; 같은 HTML 엔터티도 변환됩니다. 기존 코드에서 br 태그만 살리고 싶다면 @php $signature = $_member_info->signature ?? ''; // </div>, </p>, </li>를 <br>로 변경 (백슬래시 제거) $signature = str_ireplace(['</div>', '</p>', '</li>'], '<br />', $signature); // <br> 태그만 남기고 나머지 HTML 태그 제거 $signature = preg_replace('/<(?!br\s*\/?)[^>]+>/i', '', $signature); // 불필요한 공백, &nbsp;, 여러 개의 <br>를 하나의 <br>로 정리 $signature = preg_replace('/^(?:\s|&nbsp;|<br\s*\/?>)+|(?:<br\s*\/?>|&nbsp;|\s)+$/iu', '', $signature); $signature = preg_replace('/(<br\s*\/?>\s*)+/iu', '<br />', $signature); @endphp @if(strlen($signature)) <div class="signature li"><p class="ib">{!! $signature !!}</p></div> @endif