2011-02-14 5 views
0

스팬 id 내부 값 검색?PHP의 다른 사이트에서 값을 가져 옵니까?

<span id="playerCount">157,767 people currently online</span> 

어떻게 그 ID 값을 가져 오겠습니까? 나는 preg_match()를 생각했으나 안전하다고 생각하니?

+0

나쁜 생각을 (DOMDocument를 참조), 그 시간 + 외부 사이트 렌더링 시간을 원래의 페이지를 렌더링'될 것입니다 시간을 렌더링 페이지를 의미이다 + network latency' – ajreal

답변

4

PHP의 DOM 메소드를 사용하십시오. 다음 코드에서는 allow_url_fopen을 사용한다고 가정합니다.

$domd = new DOMDocument(); 
libxml_use_internal_errors(true); 
$domd->loadHTML(file_get_contents($url)); 
libxml_use_internal_errors(false); 

$span = $domd->getElementById("playerCount"); 
$span_contents = $span->textContent; 
+1

이것은 웹 사이트가 잘 형성되어 있는지 여부에 달려 있습니까? – Jacob

+0

@Jacob : 그것이 의미하는 바는 유효하지 않아도됩니다. 나는 DOMDocument에 의해 잘 해석 된 코드를 잘 보아 왔지만, 파싱이 실패한 경우를 만났다. 그 코드는 끔찍한 엉망 이었지만 내 브라우저조차도 그들을 현명하게 표시하지 못했습니다. – Maerlyn

+0

감사합니다. 내가 시도했을 때'libxml_use_internal_errors()'함수에 대해 알지 못했다. 아마도 내가 더 이상 멈추지 않을 것이다. – Jacob

0

Regex를 사용하면 매우 쉽습니다. 그것이 내가 바로 HTML을 구문 분석을 위해 만든 도구를 사용하는 것이 좋습니다 것보다 고급 뭔가를한다면

<?php 
// content containing: '<span id="playerCount">157,767 people currently online</span>'; 
$content = file_get_contents('http://example.com'); 
preg_match('/<span id="playerCount">([0-9,]+) people currently online<\/span>/', $content, $matches); 
var_dump($matches); 
관련 문제