유효하지 않은 HTML 태그 사이의 공백을 제거하는 정규식 - 예: "</b>"는 "</b>"이어야 합니다.
P粉884667022
2023-09-02 19:56:28
<p>태그 내의 공백으로 인해 일부 HTML이 엉망이 되어 다시 유효하게 만들고 싶습니다. 예를 들면 다음과 같습니다. </p>
<pre class="brush:php;toolbar:false;">< div class='test' >1 > 0은 <b >true</ b> 바나나</div></pre>
<p>는 유효한 HTML로 변환되어야 하며, 렌더링되면 다음이 생성될 것으로 예상됩니다. </p>
<p>
<pre class="snippet-code-html lang-html Prettyprint-override"><code><div class='test'>1 > 0은 <b>true</b> >>> 바나나</div></code></pre>
</p>
<p><code></code> 또는 </code><</code>에서 공백 앞/뒤의 모든 텍스트는 변경되지 않은 상태로 유지되어야 합니다. 예: <code>1 <0</code>는 <code>0</code></p >로 압축되는 대신 유지되어야 합니다.
<p>여기에는 여러 정규 표현식이 필요할 수 있다는 것을 알고 있습니다. 괜찮습니다</p>
<p>몇 가지가 있습니다:</p>
<p><code><s?/s*</code> 이는 <code></ b></ div ></code>로 부분적으로 수정됩니다. ;/b></div ></code> 나머지는 작업 중입니다<
<p>예를 들어 과감한 접근 방식을 취할 수도 있지만 그렇게 하면 라벨 이름 자체가 아닌 라벨 텍스트 부분 내의 코드가 손상될 수도 있습니다.</p>
당신이 게시한 것만큼 손상된 문서를 저장할 수 있는 합리적인 방법은 없지만 텍스트에
으아악>
和类似字符替换为其相关实体,例如:> ;
를 입력한다고 가정하면 승인하려는 문서를 DomDocument 와 같은 적절한 라이브러리에 넣어서 처리할 수 있습니다. 나머지.출력:
으아악이 정규식도 작동합니다:
HTML 태그의 유효한 부분을 4개 부분으로 나누고 나머지 부분(공백)을 해당 부분으로 대체합니다.
Regex101 데모
/(]*S)s*(>)/g
( - 여는 꺾쇠 괄호 캡처(섹션 1)
s*
- 모든 공백과 일치(/?)
- 선택적 백슬래시 캡처(2부)s*
- 백슬래시 뒤의 모든 공백과 일치합니다.([^]*S)
- 후행 공백 없이 태그 내 콘텐츠 캡처(섹션 3)s*
- 콘텐츠 뒤와 오른쪽 꺾쇠괄호 앞의 공백과 일치합니다(>)
- 오른쪽 꺾쇠괄호 캡처(섹션 4)