Он (от беглого взгляда), потому что вы пытаетесь соответствовать:
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 = 'правый' и класс = 'SmallDimmedText'
Однако ваше регулярное выражение для этого раздела является:
... 40% \ 'align = \' right \ 'class = \' SmallDimmedText \ '> ...
Где указано, есть пробел.
Использование DOM Parser Это сэкономит вам больше головных болей, вызванных тонкими ошибками, чем вы можете рассчитывать.
Просто, чтобы дать вам представление о том, насколько просто разбираться с использованием простой 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);