당신이 일치하는 것을 시도하고 있기 때문에 (빠른 눈에서) 때문이다 :
이
Last([a-zA-Z0-9\s\.\-\',]*)
이 정규식은 필요가 없습니다 :이 정규 표현식으로
Last Login: 11/14/2009
문자는 :
및 /
이며 텍스트 문자열에 포함됩니다. 에 정규식의 필요한 부분을 변경 :
Last([a-zA-Z0-9\s\.\-\',:/]*)
것은 일치를 제공합니다
는 단순히 DOM parser을 사용하고 DOM 조회의 결과에 정규식을 미리 형성하는 것이 더 있을까? 그것은
편집
다른 문제는 HTML이 있다는 것입니다 ... 더 좋은 정규식있게 :
... 40 % right'class의 = 'SmallDimmedText'> '= 정렬'을. .. 정렬 = '권리'와 클래스 사이에 공백이없는
은 = 'SmallDimmedText'는
그러나 그 부분에 대한 정규식은 다음과 같습니다
... 40 % \ 'align = \'right \ 'class = \'SmallDimmedText \ '> ...
표시되는 곳에 공백이 있습니다.
DOM 구문 분석기을 사용하면 계산할 수없는 것보다 미묘한 버그로 인한 두통을 줄일 수 있습니다.
단순 HTML DOM을 사용하여 구문 분석하는 것이 얼마나 간단한 지에 대한 아이디어를 제공하기 만하면됩니다.
$html = str_get_html(...);
$elems = $html->find('.SmallDimmedText');
if (count($elems->children()) != 1){
throw new Exception('Too many/few elements found');
}
$text = $elems->children(0)->plaintext;
//parsing here is only an example, but you have removed all
//the html so that any regex used is really simple.
$date = substr($text, strlen('Last Login: '));
$unixTime = strtotime($date);