채택완료

snoopy 정규식질문

2018-01-22 (월) 12:58:32 1,923

<div class="info">
                                            <p class="rating">1551<span>상위 12.3501%</span></p>

변수에 1551이라는 숫자를 넣어 불러오는 하드코딩이아닌 고정값이아닌 동기화마다 바뀌는값을 자동으로 크롤링해서 mysql 로 올리고싶습니다.

위 태그처럼 어느 특정 홈페이지에서 1551 이라는 숫자를 실시간으로 크롤링하여 db로 넣으녀는 작업을 하고있습니다.

근데 

include_once 'Snoopy.class.php';

$snoopy=new snoopy;

$o="";

$snoopy->fetch("http://링크");

$txt=$snoopy->results;

$rex="/\<p class=\"rating.+\"\>(.*)\<\/p\>/";

preg_match_all($rex,$txt,$o);

print_r($o[0][0]);

이렇게했는데 결과값이 불러지지않더라구요 무엇이 잘못되엇는지 도무지 알수가없어서 이렇게 질문올립니다

|

답변 1개 / 댓글 4개

채택된 답변
+20 포인트

정규식을 아래와 같이 바꿔 보시겠어요?

Copy
<p\s+class="rating">([^<]+)<span>

답변에 대한 댓글 4개

Parse error: syntax error, unexpected 'rating' (T_STRING) in 라는 오류가 나네요...
혹시나 해서 적다 말았는데..
rating의 좌우 쌍따옴표는 escape처리를 하셨나요??
무슨말씀이신지 잘모르겟네요..
샘플코드 입니다.

[code]

$str = "<p class=\"rating\">1551<span>상위 12.3501%</span></p>";

preg_match_all("/<p\s+class=\"rating\">([^<]+)<span>/",$str,$o);
print_r($o);
[/code]

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