2013-01-31 2 views
-1

모든 PHP 사용자가 사용할 수있는 간단한 단락입니다. HTML의 일부를 나타내는 문자열이 있습니다. 다음과 같이 보입니다 :PHP에서 HTML 문자열 내의 특정 단락을 대상으로 지정하는 방법

<p>blablabla.....</p> 
<p>blablabla.....</p> 
<p>blablabla.....</p> 
<p>blablabla.....</p> 
<h3>hello</h3> 
<p>blablabla.....</p> 
<p>blablabla.....</p> etc etc 

내가하고 싶은 것은 h3을 치기 전까지는 각 노드에 루프를 적용하는 것입니다.

감사합니다, 지금까지 시도

편집 : 단순히 작동하지 않습니다

$dochtml = new DOMDocument(); 
$dochtml->loadHTML($strhtml); 

foreach ($dochtml->childNodes as $node) 
{ 

    if($node->tagName == "p") { 
    $node->setAttribute('class', 'someclass'); 
    } else { 
    break; 
} 
} 

.

HTML 조각은 데이터베이스에서 가져온 것으로 CMS 내의 편집 가능한 페이지 부분을 나타냅니다. 와

+0

어떻게 당신은 HTML 조각에 당기는? PHP가 이런 종류의 일에 가장 적합한 방법인지 확신 할 수 없습니다. – user17753

답변

-1

음 :

<?php 

$string = explode('<h3>', $string); 
$string[0] = str_replace('<p>', '<p class="foo">', $string[0]); 
$string = implode('<h3>', $string); 
0

시도 : 다른 항목을 포함하는 몇 가지 루트 요소가 있어야하기 때문에이 <xml> 태그를 추가 한

$html = '<xml><p>blablabla.....</p> 
     <p>blablabla.....</p> 
     <p>blablabla.....</p> 
     <p>blablabla.....</p> 
     <h3>hello</h3> 
     <p>blablabla.....</p> 
     <p>blablabla.....</p></xml>'; 
$xml = new SimpleXMLElement($html); 

foreach ($xml as $key => $value) { 
    if ($key == 'h3') { 
     var_dump($value); 
     break; 
    } 
} 

참고.

관련 문제