2009-05-02 5 views
0

아래 xpath 쿼리를 사용하여 속성에 문자열 함수 (예 : "normalize-space")를 적용하는 올바른 구문은 무엇입니까?php xpath - 속성에 대한 문자열 함수

검색어 : "./@media"

내가 다른이의 예를 본 적이 있지만, 나는 그것이 PHP의 XPath는 라이브러리를 사용하려고하면 그것은 아무 것도 반환하지 않습니다 ...

+0

내 전체 코드는 다음과 같습니다. $ xpath-> 쿼리 ("./ [(-정상화 공간 @"$ {. $ 태그 "attributeitem"}, $ {$ "0") – EddyR

+0

$ tag는 어떤 유형입니까? var_dump ($ tag); 말할 수 있습니다. – VolkerK

답변

1

것이다 (A DOMNodeList 객체에 싸여) 노드 집합에서 항상 결과, 결코 문자열입니다.

XPath 함수의 결과를 추출 할 수 없습니다. 처리 할 노드를 쿼리하고 PHP로 처리해야합니다.

+0

효율적인 코딩을 위해! 나는 PHP의 오래된 xpath 라이브러리의 함정을 천천히 배우고있다. :) 그들은 언젠가 곧 2.0으로 이동하기를 바라고있다. – EddyR

+0

사용 된 XPath의 버전이나 PHP 라이브러리의 나이가 의심 스럽습니다. XPath 2.0이 지원 될 때이 동작이 변경 될 것이라는 것을 확인할 수 있습니까? 아니면 어떻게해야할까요? – Tomalak

0
./[normalize-space(@media) 

이 시도하십시오.

+0

그래, 그것을 시도하고이 오류를 반환합니다 - 잡을 수있는 치명적인 오류 : DOMElement 클래스의 객체를 – EddyR

0

어때?

normalize-space(./@media) 

또한 시도 할 수 :

normalize-space(string(./@media)) 

하지만 나는 여기에이 켜지지 생각하지 않습니다. DOMXPath 객체에 query()를 사용

+0

문자열로 변환 할 수 없습니다. 여전히 동일한 오류가 발생합니다 – EddyR

5

query() 대신 evaluate()을 사용하십시오. 형식화 된 결과를 반환합니다. PHP 5.1부터 사용할 수 있습니다.

$doc = new DOMDocument(); 
$xpath = new DOMXpath($doc); 
$q = $xpath->evaluate('"test"'); 
var_dump($q); 

출력 :

string(4) "test" 
+1

좋은 추가, +1. – Tomalak