2014-04-18 7 views
0

나는 다음과 같은 HTML 구조가 있습니다스토어에게 PHP 배열의 중첩 DOMNodes의 값

$oDomObject = $oDomXpath->query("//span[number(@class)=number(@class)]"); 

가 어떻게 값을 저장할 수 있습니다 : 나는 그것을 검색하는 다음 함수를 사용하고

<span class="1"> 
    <span class="name"> 
    </span> 
    <span class="books"> 
     <span class="english"> 
     </span> 
     <span class="english"> 
     </span> 
    </span> 
</span> 
<span class="2"> 
    <span class="name"> 
    </span> 
    <span class="books"> 
     <span class="english"> 
     </span> 
     <span class="english"> 
     </span> 
    </span> 
</span> 
... 

을 중첩 순서를 유지하는 PHP 배열에서?

foreach ($oDomObject as $oObject) { 
    ..*SOMETHING*.. 
} 

감사합니다.

답변

-1

다음과 같은 재귀 함수를 작성해야합니다.

경고 : 테스트를 거치지 않았으므로 약간의 조정이 필요할 수 있습니다. 그러나 이것은 머리를 올바른 위치에 놓아야합니다.

foreach ($oDomObject as $oObject) { 
    $myArray[] = getChildren($oObject); 
} 

function getChildren($nodeObj) { 
    retArray = array(); 
    if($nodeObj->hasChildren()) { 
    $retArray[] = getChildren($nodeObj); 
    } else { 
    $retArray[] = $nodeObj->nodeValue; 
    } 
    return $retArray; 
} 

설명 : 자식이없는 노드를 발견하면 값을 배열에 추가합니다. 그렇지 않은 경우는, 배열에 아이의 값의 배열을 추가합니다. 이것은 광고 nauseam, 그리고 당신이 당신의 머리를 감쌀 수있는만큼 깊게 발생합니다.

상황이 생각하는 약 :

  1. 어떤 깊이의 특정 수준이 매우 우습고 통과하기가 매우 귀찮을 때문에, 내 배열이 완료되면처럼 보이고 싶어.

  2. 원하는 작업을 지금 처리하는 대신 루프를 반복 할 가능성이있는 배열에 왜 추가할까요?

+0

이 경우 노드 결과 ($ oDomObject)를 탐색해야하므로이 작업을 수행하려고했습니다. 즉, 주어진 하위 노드의 값을 표시 할 수 있어야합니다 (예 : 또는 또는 기타). 다음과 같은 것 : echo $ oObject-> childNode ("books") -> childNode ("english") (0) -> nodeValue; 도움 주셔서 감사합니다. – karlosuccess