Eğer maç için çalışıyoruz çünkü (hızlı bir bakışta) olduğunu:
Last Login: 11/14/2009
Bu regex ile:
Last([a-zA-Z0-9\s\.\-\',]*)
Regex :
gerekli karakterleri içeren ve /
hangi metin dizesindeki dahil değildir. : Regex ilgili kısmını değiştirerek
Last([a-zA-Z0-9\s\.\-\',:/]*)
Gives a match
Sadece bir DOM parser kullanın ve sonra DOM arama sonucu regex preform için daha iyi olurdu? Bu güzel regex için yapar ...
EDIT
Diğer konu HTML olmasıdır:
... 40%> right'class = 'SmallDimmedText' align = '...
Align = 'sağ' ve sınıf arasındaki boşluk yoktur nerede = 'SmallDimmedText'
Ancak bu bölüm için regex olduğunu:
...% 40 \ \ right '= \ hizaya' class = \ 'SmallDimmedText \'> ...
Bu gösterilir Nerede bir boşluk var.
Use a DOM Parser Bu size güvenebilirsiniz daha ince hataların neden daha fazla baş ağrısı kurtaracak.
Sadece sana Basit HTML DOM kullanarak ayrıştırmak için ne kadar basit bir fikir vermek için.
$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);