Znalazłem klasę, która odczytuje dane o postaciach z gry online z oficjalnej strony i wyświetla na naszej stronie.
Mam taki kod z wyrażeniami regularnymi:
private function _get_character_info(){ $patt = '@<TD WIDTH=20%>Name:</TD><TD>(.*?)</TD>.*?'; $patt .= '<TD>Sex:</TD><TD>(.*?)</TD>.*?'; $patt .= '<TD>Profession:</TD><TD>(.*?)</TD>.*?'; $patt .= '<TD>Level:</TD><TD>(.*?)</TD>.*?'; $patt .= '<TD>World:</TD><TD>(.*?)</TD>.*?'; $patt .= '<TD>Residence:</TD><TD>(.*?)</TD>.*?'; $patt .= '<TD>Last login:</TD><TD>(.*?)</TD>.*?'; $patt .= 'Status:<\/TD><TD>(Premium Account|Free Account)<\/TD>.*?'; $patt .= '@mis'; return $this->_parse_character_info($sbp); } /* parsuje informacje o postaci */ private function _parse_character_info($arr){ 'nick' => $this->_norm_nick( $arr[1] ), 'sex' => $arr[2], 'vocation' => $arr[3], 'level' => $arr[4], 'world' => $arr[5], 'residence' => $arr[6], 'last_login' => TPF::date2date($arr[7]), 'status' => $arr[8] ); return $out; }
Dane pobiera z przykładowo podstrony:
http://www.tibia.com/community/?subtopic=characters&name=Morrus
Brakuje mi jednej informacji w klasie. Nie pobiera pola "House".
Domki mogą występować ze słówkiem Shop w nawiasie lub w ogóle bez. Potrzebuje pobrać dane w następujący sposób (zależnie od domku):
Przykład 1
Gdy skrypt otrzyma: House: Rathal II d (Ankrahmun) is paid until Mar 14 2010
pobierze: Rathal II d
Przykład 2
Gdy skrypt otrzyma: House: Harbour Place 1 (Shop) (Thais) is paid until Mar 15 2010
pobierze: Harbour Place 1 (Shop)
Ktoś mi kiedyś układał do tego wyrażenie regularne, działało jeżeli zastosowałem je sam, a nie dołączałem do klasy.
// Brak słówka "(Shop)" $house = "#House:<\/TD><TD>([^\(]+)\(([^\(]+)\) is paid ([^<]+)?<\/TD>#i"; // Ze słówkiem "(Shop)" $shouse = "#House:<\/TD><TD>([^\(]+) \(([^\(]+)\) \(([^\(]+)\) is paid ([^<]+)?<\/TD>#i";
Gdy to dołączam do klasy - nie działa. Bardzo proszę o pomoc.
