2011-04-13 2 views
0

나는 성가심을 의미하지 않는다. 그리고 나는 이것이 천 번 전에 요구되었지만 나는 단지 개념을 이해하지 못한다는 것을 알고있다. 누군가가 나를 통해 나를 걸을 수 있는지 궁금 해서요, 여기는 내가 뭘하려고하는지입니다 :알려진 변수 사이의 정보를 파싱하는 것

나는 일련의 정보를 html 파일에 가지고 있습니다. 파일이 서버에 업로드되고 내가 설정 매개 변수 (따라 데모 코드) 내부 파일의 정보를 구문 분석해야합니다. 나는 일주일 이상 파싱을 읽고 그 중 일부를 이해하고 있지만 단지 개념을 이해하지 못했기 때문에, 나는 이해할 수있는이 데모에서 누군가를 필요로하고, 가능하다면 검색 변수를 낮추십시오. 데모는 다음과 같습니다.

<hr> 
<a id="Operating_System"></a> 
<table WIDTH="100%" BORDER="0" CELLSPACING="0" ALIGN="CENTER"> 
<CAPTION ALIGN="TOP"><FONT size="5">Operating System</FONT></CAPTION> 
<tr><td><a href="#TOC">Top</a></td></tr> 
<TR ALIGN="LEFT" BGCOLOR="#00FF00"> 
<TH>Property</TH> 
<TH>Value</TH> 
</TR> 
<TR BGCOLOR="#F0F0F0"> 
<TD>Name</TD> 
<TD>Windows 7 Professional x64 Service Pack 1</TD> 
</TR> 
<TR> 
<TD>Features</TD> 
<TD>Terminal Services in Remote Admin Mode, 64 Bit Edition, Media Center Edition, Multiprocessor Free</TD> 
</TR> 
<TR BGCOLOR="#F0F0F0"> 
<TD>Up Time</TD> 
<TD>5 Days 22 Hours 4 Minutes 26 seconds</TD> 
</TR> 
<!-- Operating System Duration: 1.853 seconds --> 
</table> 
<hr> 
<a id="Installed_Updates"></a> 
<table WIDTH="100%" BORDER="0" CELLSPACING="0" ALIGN="CENTER"> 
<CAPTION ALIGN="TOP"><FONT size="5">Installed Updates</FONT></CAPTION> 

여기는 내가 달성하려고하는 것입니다. 이 데모에서는 정보를 파싱해야하지만 특정 정보 만 다시 제공해야합니다. 여기에는 더 많은 정보가 있지만 각 문서에는 약 30 가지 정도의 정보 만 필요합니다. 먼저 Operating_System에서 Installed_Updates로 검색해야하는데, 이것은 내가 정보를 수집 할 필요가있는 첫 번째 집합 영역을 줄 것입니다 (다른 그룹도 있으므로 각 그룹의 정보를 만들 것입니다). 나는 좀 더 구체적으로 <TR>에서 </TR>에 이르기까지 필자에게 필요한 실제 정보를 줄 것이다. 그 후 데이터베이스에 저장할 첫 번째 '이름'과 '값'을 가져옵니다.

다시 알지만, 나는 단순한 표현의 전체 개념을 얻지 못하고 있습니다. 나는 그것을 실제 문서에서 몇 번 해본 후, 나는 생각한다.

도움을 주셔서 대단히 감사합니다. 정말 고맙습니다.

+2

변수로 무엇을 의미하는지 명확하지 않습니다. 표 값을 추출하려면 기존 솔루션 인 [html table parser] (http://www.google.com/search?q=php+html+table+parser)가 있습니다. 정규식에 대해 모르는 경우에는 사용하지 마십시오. phpQuery 또는 QueryPath는 * \ * parsing \ ** html에서 더 쉽습니다. 변수에 의해 – mario

+0

내가 코드 요소를 의미, 미안 해요. 그들은 결코 바뀌지 않으며 실제로 첫 번째 텍스트 문자열은 변경되지 않지만이 html 페이지의 출력은 10 페이지가 넘고 모든 페이지 (사용자 당 총 3 페이지)에 총 30 개의 문자열이 필요합니다. 정규식을 할 수 있습니다. 나는 테이블 파서를 조사해 왔지만, 모든 콘텐츠를 제공하고 리소스를 낭비하여 내 필요에 맞을 지 확실하지 않습니다. –

답변

0

이것은 변형이 거의없는 고정 HTML에만 적용됩니다. 그냥 간단한 예를 원한다면, 여기 하나입니다

preg_match('#<TD>Up Time</TD>.*?<TD>([\w ]+)</TD>#is', $html, $match); 

print $match[1];     # ^^^^^^ 

어떤 툴도 https://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-world 참조하십시오. 그리고 구문을 배우려면 http://regular-expressions.info/.

하지만, 많은 값을 추출하려는 경우 더 쉬운 옵션이 있습니다.

관련 문제