2011-11-05 2 views
1

내가 원하는 것을 선택하기 위해 DomXPath에 문제가 있습니다. 나는 같은 구조를 가지고있다DomXPath 선택

<div id="a"> 
    Something 
    <nobr> Inside </nobr> 
</div> 

내가 원하는 것은 '내부'가 아닌 '무언가'만을 선택하는 것이다. 나는 오직 //div[@id='a'] 같은 시간에 '인사이드'또는 둘 모두를 선택하는 방법을 알고 $obj->nodeValue을 호출하지만 '뭔가'를 선택하는 방법을 찾지 못했습니다. 아무도 이것에 대해 나를 도울 수 있습니까? 감사합니다. .

편집 : 뭔가가 123456으로 변경되면 123456이라는 숫자 값만 보너스로주는 방법을 알려줄 수 있습니까?

+0

나는 그것이 // DIV [ID @ = 'A']/자식 찾았을 :: 텍스트()하지만 여전히 숫자 값을 선택하는 방법을 찾을 수 없습니다. – ufucuk

답변

1

xpath에서 텍스트 노드 안의 숫자를 찾으려면 꽤 무겁습니다. 대신 당신은 값을 얻기 위해 textnode의 텍스트를 구문 분석하는 PHP에서 정규 표현식을 사용할 수 있습니다

$doc = new DomDocument; 
$doc->loadXML($xml); 
$xpath = new DOMXPath($doc); 
$text = $xpath->query("/div[@id='a']/child::text()")->item(0)->nodeValue; 
$r = preg_match('~\d+~', $text, $matches); 
list($number) = $matches; 

Demo

+0

나는 많은 답변을 찾았지만 xpath 방법을 찾을 수 없었고 정규 표현식도 사용했기 때문에 답변을 받아 들일 수 있다고 표시했습니다. 감사. – ufucuk

관련 문제