2012-11-29 4 views
2

PHP 문자열에서 특정 태그를 제거 할 수있는 방법이 있는지 궁금합니다.PHP 문자열에서 특정 태그 제거

$string = '<p>Test paragraph.<p class="inner">Here is some inner text</p></p>';

방법 :

내가 예를 strip_tags를 들어, 수있는 여러 가지 기능의 지식을 가지고,하지만 난 정말 원하는 것은 클래스의 속성이나가 포함 된 태그를 제거하는 것입니다, 나는 아래의 예를 들어 줄 'inner'클래스 속성을 포함하는 태그 만 제거 할 수 있습니까?

누구나이 방법을 말해 줄 수 있다면 감사 할 것입니다.

+2

당신은 HTML을 직접 구문 분석해야합니다. – NullUserException

+0

DOM 파서를 사용하여 HTML을 구문 분석 한 다음 DOM을 수정하고 DOM에서 HTML을 다시 작성하십시오. [PHP DOM] (http://php.net/manual/en/book.dom.php) 페이지를보십시오. 정규 표현식으로 해결하려는 문제는 아닙니다. –

+0

비슷한 질문을 던졌습니다. [이 링크] (http://stackoverflow.com/questions/13154595/extract-div-tags-with-specific-class-using-php)에 대한 답변이 있습니다. – harry

답변

2

끔찍한 정규식을 사용하지 않으려면 가장 좋은 방법은 DOMDocument 클래스에로드하고 문자열의 태그를 반복하는 것입니다. 그런 다음 클래스 속성에 따라 선택적으로 태그를 제거한 다음 다시 문자열에 쓸 수 있습니다.

설명서는 http://php.net/manual/en/class.domdocument.php을 참조하십시오. XPath에와

+0

고마워. – oletob

+0

@evolquez : 반복 할 필요가 없습니다. 내 대답을 확인해. –

1

매우 간단합니다 :

<?php 

$string = '<p>Test paragraph.<p class="inner">Here is some inner text</p></p>'; 

$dom = new DOMDocument; 
@$dom->loadXML($string); 

$xpath = new DOMXPath($dom); 

$inners = $xpath->query('//p[@class="inner"]'); //Select all p.inner in the document 

foreach ($inners as $element) { 
    $element->parentNode->removeChild($element); //Remove 'em 
} 

var_dump($dom->saveHTML($dom)); 
관련 문제