2010-07-20 7 views
0

다양한 장소에서 교체 할 코드 스 니펫이 있는데 preg_replace 패턴을 작성하는 방법은 궁금합니다. 감사! 당신이 완전히 교체 할 경우다음과 같이 어떻게 pregreplace합니까?

<div class="leftside item1"> 
    <label for="item1">Item1</label> 
</div> 
<div class="rightside item1_select"> 
<select class="item1_select" id="item1_select"> 
    <option value="">Select one</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
</select> 
+0

무엇으로 바꾸시겠습니까? –

+0

문자열을 바꿀 내용을보고해야합니다. 그렇지 않으면 질문의 절반 부분이 누락됩니다. – kiamlaluno

답변

0

을하고, str_replace()를 사용하는 코드가 일정 :

<div class="leftside item1"> 
    <label for="item1">Item1</label> 
</div> 

나는로 교체하고 싶습니다. 실제 문자열이 다소 다르면 regexes를 사용하지 마십시오. 실제로 XML/HTML 또는 SGML과 잘 섞이지 않기 때문에 파서 (예 : , XPath 쿼리 및 일부 노드 조작)를 사용하십시오.

$html = '<div class="leftside item1"> 
    <label for="item1">Item1</label> 
</div> 
<p>aa</p> 
<div class="leftside item1"> 
    <label for="item1">Item1</label> 
</div>'; 

$d = new DOMDocument(); 
$d->loadHTML($html); 
$add = $d->createDocumentFragment(); 

$x = new DOMXPath($d); 
$list = $x->query("//div[@class='leftside item1']"); 
if($list->length){ 
    foreach($list as $divnode){ 
     $add->appendXML('<div class="rightside item1_select"> 
      <select class="item1_select" id="item1_select"> 
      <option value="">Select one</option> 
      <option value="1">1</option> 
      <option value="2">2</option> 
      </select> 
     </div>'); 
     if($divnode->nextSibling instanceof DOMNode){ 
      $divnode->parentNode->insertBefore($add,$divnode->nextSibling); 
     } else { 
      $divnode->parentNode->appendChild($add); 
     } 
    } 
} 
echo $d->saveHTML(); 
+0

str_replace를 사용해 보았지만 작동하지 않았습니다. 내가 뭘 잘못하고 있는지도 모르겠다. – hsatterwhite