Это (с первого взгляда) потому, что вы пытаетесь соответствовать:
Last Login: 11/14/2009
С этим регулярным выражением:
Last([a-zA-Z0-9\s\.\-\',]*)
Регулярное выражение не содержит обязательных символов :
и /
, которые включены в текстовую строку. Изменение требуемой части регулярного выражения на:
Last([a-zA-Z0-9\s\.\-\',:/]*)
дает совпадение
Было бы лучше просто использовать DOM parser , а затем предварительно преобразовать регулярное выражение в результате поиска DOM? Это делает для более приятного регулярного выражения ...
EDIT
Другая проблема в том, что ваш HTML-код:
... 40% 'align =' right'class = 'SmallDimmedText'> ...
Там, где нет пробела между align = 'right' и class = 'SmallDimmedText'
Однако ваше регулярное выражение для этого раздела:
... 40% \ 'align = \' right \ 'class = \' SmallDimmedText \ '> ...
Там, где указано, есть пробел.
Использование DOM Parser Это избавит вас от головной боли, вызванной незначительными ошибками, чем вы можете сосчитать.
Просто чтобы дать вам представление о том, как просто анализировать с помощью Simple 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);