2013-02-21 5 views
0

HTML 문서에서 JavaScript myfunc를 찾으려면 어떻게 검색합니까? 즉, 다음 노드가 포함될 수있는 HTML 건초 더미에서 앞서 언급 한 바늘을 찾고 싶습니다.DOMXPath-> query (???) : JavaScript를 찾는 HTML 문서의 모든 노드를 검색합니다.

  • <p onMouseOver="myfunc(a,b,c)">blah blah blah</p>
  • <a href="javascript:MyFunc(a, b, c)">blah blah blah</a>
  • <img onmouseover='myFunc(a,b, c)' src="someimage.gif">

내가 현재 사용하고있는 PHP 코드는 다음과 같습니다

foreach($domxpath->query('[onmouseover^="myfunc"]') as $node) { 
    $text = $node->nodeValue; 
    echo "<br>text=".$text; // just to see what i get 
} 
+0

[Explosion Pills] (http://stackoverflow.com/users/454533/explosion-pills)가 내 질문을 수정하는 데 크게 도움이됩니다. – citizen

답변

0

그냥 onmouseover을 검색하는 것이 아닙니다 (<a> 참조). PHP 이것은 "이 myfunc"(대소 문자 구분) 포함 된 속성 어디서나 어떤 노드를 선택 만의 XPath 1.0

//*[@*[contains(.,"myfunc")]] 

바라기 때문에 함수 이름은 일치한다.

+0

이 케이스를 _insensitive_로 만드는 방법은 무엇입니까? – citizen

+0

XPath 2.0을 사용하면 쉽습니다.하지만 사용 가능한 단순한 대소 문자 구분 검색이 없습니다. 그래도 추악한 대안이 있습니다 : http://stackoverflow.com/questions/3238989/case-insensitive-xpath-searching-in-php –

+0

용서해 주겠지 만 해결책은 나에게 노드 이름과 가치를 부여합니다. 속성에 어떻게 액세스합니까? [getAttribute] (http://www.php.net/manual/en/domelement.getattribute.php)에는 속성 이름을 알아야합니다. – citizen

1

당신이 원하는 //*[contains(@onmouseover, 'myfunc')] 같은 패턴 :

  • //*은 문서의 모든 요소를 ​​선택합니다.
  • [contains(@onmouseover, 'myfunc')]은 onmouseover 속성에 "myfunc"가 포함 된 것을 선택합니다.