2017-03-28 1 views
3

태그를 제거정규식 연속 문자 서식 내가 일치와 HTML 파서</p> <p>입력 간단한 DOM의 전체 단락 태그를 둘러싸는 태그 서식 연속 문자를 대체 할 정규식이 필요

아래와 같은 경우 regex는 <b> 태그 만 일치해야하며 전체 단락 태그를 둘러싸는 유일한 태그이기 때문에

예 : 입력 : <p><b>Text <i> some more text </i>text inside </b></p>

출력 : <p>Text <i> some more text </i>text inside </p>

감사합니다.

답변

0

이는 다음과 같이 보일 것이다 : 정규식의 \1가에서 HTML 태그 이름과 일치하는지

foreach($html->find('p') as $p) { 
    while(preg_match('/^<([^>]+)>(.*)<\/\1>$/', $p->innertext, $m)){ 
    $p->innertext = $m[2]; 
    } 
} 

주 첫 번째 그룹을 캡처, 아마도 필요는 없지만 보너스를 위해 그것을했다.

+0

감사합니다. @pguardiario – Abdul

0

우아하고 부분적인 청혼이 아닙니다.

  1. 트림 (스트립)를 input 문자열
  2. while True:
  3. <b>""
  4. ""
  5. 에 등 문자 태그를 교체하십시오 <i>
  6. ""에 교체 ...
  7. 하는 경우 일치하는 항목이 없습니다. 3 ~ 6 단계에서 break.

3 단계의 정규식은 다음과 같습니다.

<p>\s*(<i>)*\s*.*(<\/i>)\s*<\/p> 

<b> 태그를 들어, <b><i>을 대체 등