2012-08-30 5 views
0

php xpath를 사용하여 문자열 값에서 통화 값을 어떻게 얻을 수 있습니까?PHP Xpath - 특정 값을 얻는 방법?

<div class="detalheDir2"> 
<div class="preco"> 
R$ 
<script type="text/javascript">document.write(aZ427014992694557())</script> 
24,90 
</div> 
</div> 

난 당신이 같은 색인을 사용할 수 있습니다, 내가 쿼리 원하는 텍스트 노드가이 위치에 항상 경우

$xpath->query("descendant::div[@class='detalheDir2']/div[@class='preco']/text()", $child); 

답변

1

를 사용하고 단지 24,90

을 얻으려면 :

//div[@class='detalheDir2']/div[@class='preco']/text()[2] 

항상 <script> 태그 다음에 쓸 수있는 경우 :

//div[@class='detalheDir2']/div[@class='preco']/script/following-sibling::text() 

는 항상 마지막 텍스트 노드는 어쩌면

//div[@class='detalheDir2']/div[@class='preco']/text()[last()] 

그것이 ,가 열쇠가 될 수에 포함 된 사실을 기록 할 수 있습니다 경우 : 예를 들어 이러한 모든 작업을

//div[@class='detalheDir2']/div[@class='preco']/text()[contains(., ',')] 

을 그러나 입력에 차이가 있으면 이러한 중단이 발생합니다.

텍스트 노드 사이에 어딘가에 있다는 사실 만 알면 형식 만 다른 것으로 설정되므로 모든 텍스트 노드를 선택하고 반복하고 textContent의 regexps와 일치하는 것이 좋습니다.

+0

문제는 text()를 사용할 때 R $ ocument.write (aZ427014992694557()) – adrianogf

+0

을받는 텍스트()를 제거하면 R $ 만 수신된다는 것입니다. 이 데모] (http://codepad.viper-7.com/13y9MG), 이것은 내가 어떻게 할 것입니다. '$ xpath-> query()'에서 얻은 것은 DOMNodeList 인스턴스입니다. 하나 이상의 요소가 포함되어있는 경우에는 'foreach'를 사용하여 개별 DOMNode에 도달 할 수 있습니다. – complex857

관련 문제