它(從快速瀏覽),是因爲你試圖匹配:
Last Login: 11/14/2009
有了這個表達式:
Last([a-zA-Z0-9\s\.\-\',]*)
正則表達式不包含所需的包含在文本字符串中的:
和/
的字符。更改正則表達式的必需部分:
Last([a-zA-Z0-9\s\.\-\',:/]*)
給人以匹配
它會更好簡單地用一個DOM parser,然後瓶坯的DOM查找的結果正則表達式?它使更好的正則表達式...
編輯
的另一個問題是,你的HTML是:
... 40% 'ALIGN = 'right'class =' SmallDimmedText'>。 ..
哪裏有ALIGN = '右' 和類之間沒有空格= '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);