2010-05-09 6 views
1

아직 정규식에! ;-)))PHP - regex - 여러 태그 안에 문자열을 넣으십시오

아래와 같이 같은 구조의 <tr> 행을 가진 html 파일이 있다고 가정합니다. 여기에서 (.*?)은 추출해야하는 콘텐츠입니다!

<tr align=center><th width=5%><a OnClick="(.*?)"href=#>(.*?)</a><td width=5%>(.*?)<td width=5% align=center >(.*?)</td></tr> 

좋은 으로, preg_match_all()

어쩌면 업데이트?

은 내가

match[0] . match[1] . match[2] . match[3] 

그냥 경우에 누군가가 필요가 someting 유사한이 결과 같은 것을 필요로한다! 내 작은 문제에

솔루션 시간에 대한

/<a\s*OnClick=\"(.*?)\"href=#>(.*?)<\/a><td[^>]+>(.*?)<td[^>]+>(.*?)<\/td><\/tr>/m

감사합니다!

루카 필로소피!

+2

무엇이 질문입니까? – nc3b

+0

html을 정규식으로 파싱하는 법을 묻지 않는다고 말해주세요. 악마가 올 것입니다. – prodigitalson

+1

오, 좋습니다. 아무도 그 질문에 일주일에 링크하지 않았고 거의 잊어 버렸습니다. (/ waiting ...) – Kobi

답변

0

여기에 정규식과 일치하는 실제 샘플 데이터가 없으면 여기에 약간의 추측을 던지십시오. 정규식을 사용하는 데 불만이 있습니다. 테이블이 항상 똑같아 보이지 않는 한, 정규식으로 많은 재미를 느낄 것입니다. 어쨌든

가 옆으로 모든주의는,이 작업을 수 있습니다

<tr[^>]+><th[^>]+><a OnClick="([^"]+)"\s*href="([^"]+)">([^<]+)</a><td[^>]+>([^<]+)<td[^>]+>([^<]+)</td></tr> 

그것은 정확히이 순서의 태그 (과 <a> 태그 내에 속성을) 기대, 인용 문자열 내에 꺾쇠 괄호, 아니 따옴표를 탈출하지 따옴표로 묶은 문자열 등 (파서를 사용하는 경우 걱정할 필요가없는 모든 것). PHP에서

:

preg_match_all('%<tr[^>]+><th[^>]+><a OnClick="([^"]+)"\s*href="([^"]+)">([^<]+)</a><td[^>]+>([^<]+)<td[^>]+>([^<]+)</td></tr>%', $subject, $result, PREG_PATTERN_ORDER); 

$result 다음 $result[1] 캡쳐 기없이 포함 $result[0] 전체 매치를 포함하는 어레이이다. 1 등

+0

정확하게는 아니지만, 내가 무엇을 찾고 있었는지 ... 그러나 그것은 나를 많이 도왔습니다! 추신 : 저는 여기에 질문을함으로써 정규 표현식을 배우고 있습니다. 배우는 단계별로 배우십시오! ;-) 다시 한 번 감사드립니다! <\/a>] +> (. *?) ] +> (. *?) <\/td><\/tr>'