테스트 사이트 - 개발 중인 베타 버전입니다

정규식 질문합니다. 채택완료

카누 7년 전 조회 2,977

안녕하세요. 이렇게 오랜만에 질문을 드리게되네요.

우선 답변 감사드리구요! 언제나 행복 하실꺼에요!!

 

</p>

<p><div class='Code User' id='Main'></p>

<p>html tag 50줄</p>

<p></div></p>

<p>

 

상단에 코드안에 html tag 50줄 정도가 들어있습니다!

저 내용만 추출 하는 정규식을 만들고 싶어요.

근데 조건은

div태그 - > Code클래스명으로 저 내용을 추출 하는 방식을 알고싶어서요!!

php preg_match_all로 추출 하려고 합니다!!

preg_match_all("#<div[\s]class=['\"]board-list['\"]>(.*?)<\/div>#is", $Result, $content); 

이런식으로 써봤는데요.. 중간 내용이 짤려서 </div>가 중간에 닫혀버립니다. ㅠㅠ..형제 요소가 아닌 자식 </div>에서 닫혀버려서 내용부분이 잘리는 현상이있습니다. ㅠㅠ

 

감사합니다!

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트

php 에도 css selector 를 쓸 수 있네요.

https://github.com/tj/php-selector" href="https://github.com/tj/php-selector">https://github.com/tj/php-selector

이건 어떤가요?

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

7년 전

저 예시의 마지막 </div>태그 앞 부분이나 뒤 부분의 특정될 내용을 알아야 풀 수 있겠네요.

아마도 가운데 50줄 정도되는 태그중 div태그가 있고 /div태그가 있을 것으로 보이는데

거기서 짤리는 모양이네요.

 

그리고 저런 형태가 되풀이 반복되지 않는다면 preg_match함수를 사용하죠.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

7년 전

중간에 닫혀 버리는 </div> 때문이시라면 * 대신에 + 를 써보세요

preg_match_all("#<div[\s]class=['\"]board-list['\"]>(.+)<\/div>#is", $Result, $content);

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

카누
7년 전
안그래도 * 대신에 +를 사용 해보았고 방금 재 테스트 결과에는 ㅠㅠ </div>가 중간에 닫혀버리네요.ㅠㅠ
나시
7년 전
기본적인 방식은 다 알고 계신거네요...
그렇다면 방법이 파싱 프로그램을 만드는 거 말곤 딱히 없습니다.
lazy, greedy match 검색만 해봐도 잘 안되기도 하지만 하도 경우가 많아서 믿을수 없다고 하더군요 ^^
카누
7년 전
답변 감사드립니다.!!
조금더 효율적이고 간단한 방법을 찾다보니 이렇게 된거같습니다.ㅎ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인