Habrastatistika
рджрд░рдЕрд╕рд▓, рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рд╖рдп
рд╣реИрдмрд░рдХреИрдВрдк рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рдж
, рдХреЙрдорд░реЗрдб
рдЕрдлреАрдо рдиреЗ рдПрдХ
рд╕рд╡рд╛рд▓ рдмрдирд╛рдпрд╛
, рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред
рдХрд╛рдо, рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЬреАрд╡рди рдФрд░ рдЕрдиреНрдп рдХрд╛рд░рдХреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рджреЗрд░реА рдХрд░ рд░рд╣реЗ рдереЗ, рдореИрдВрдиреЗ рдЕрднреА рднреА рдЗрд╕реЗ рдХреБрдЫ рд╢рд░реНрдд рдХреЗ рд▓рд┐рдП рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдерд╛ред
рдореИрдВ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рднреА рднрд╛рдЧ рдЧрдпрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ рджреЗрдЦрд╛ рдерд╛ред
рдЙрдкрдпреЛрдЧреА рдЕрдиреБрднрд╡, рд╕рдм рдХреЗ рдмрд╛рджред
рд╕рдорд╕реНрдпрд╛ рдПрдХ
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдЬрдм рдореИрдВрдиреЗ рд╡рд┐рд╖рдп рджреЗрдЦрд╛, рддреЛ рдореБрдЭреЗ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд╣рд┐рдП рдереА, рдЕрд░реНрдерд╛рддреНред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рдореЗрдВред
рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдПрдХ рд░реЗрдЬрд░ рдиреЗ рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░реА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА, рдЗрд╕рд▓рд┐рдП рдЕрдЬрд╛рдХреНрд╕-рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ iframe рдХреЗ рдореЗрд░реЗ рд╕рднреА рдкреНрд░рдпрд╛рд╕ рдЕрд╕рдлрд▓ рд░рд╣реЗред рдореИрдВ рдЕрд╡рдЪреЗрддрди рд░реВрдк рд╕реЗ рд╕рдордЭ рдЧрдпрд╛ рдХрд┐ js рдкрд░ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдЭрдЯрдХрд╛ рд▓рдЧрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рджреЛ, рдореБрд╢реНрдХрд┐рд▓
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдареАрдХ рд╣реИ, рдореИрдВ PHP рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬрд┐рд╕реЗ рдореИрдВ рдзреАрд░реЗ-рдзреАрд░реЗ рд╕реАрдЦ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛)ред рд╡рд┐рд╡рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЛрдЪрд╛, рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
рдореБрдЭреЗ DOM рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЗрд╡рд▓ 1 рдХрдореЗрдВрдЯ рд░реЗрдЯрд┐рдВрдЧ рдорд┐рд▓реА рд╣реИред "рдореБрдЭреЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдореЗрдВ рд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ" рд╡рд┐рдЪрд╛рд░ рдореЗрд░реЗ рд╕рд┐рд░ рдореЗрдВ рдШреВрдорддреЗ рд╣реИрдВред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ 0 рдХреЗ рдорд╛рди, рдкреНрд▓рд╕ рдФрд░ рдорд╛рдЗрдирд╕ рдХреЗ рдорд╛рди рд╣реИрдВред рдЗрд╕реЗ рдорд╛рдЗрдирд╕ рд╣реЛрдиреЗ рджреЗрдВ, рд╕рд╛рде рд╣реА рдореИрдВрдиреЗ рдкреВрд░реНрдгрд╛рдВрдХ рдореЗрдВ рдХрд╕реНрдЯрдо
рдлрд╛рдпрд░рдмреЙрд▓ рдХреЛ рдХрд╛рдЯ
рджрд┐рдпрд╛ , рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ print_r рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрдпрд╛ рд╣реБрдЖред рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ рдореБрдЭреЗ -34 рдХреА рд░реЗрдЯрд┐рдВрдЧ рдорд┐рд▓рдиреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рдереА! рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реНрддреВрдк рдореЗрдВ рдЧрд┐рд░ рдЧрдпрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЯрд╣рд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдЖрд╢реНрдЪрд░реНрдп рдореЗрдВ рдЙрдмрд▓рддреЗ рджрд┐рдорд╛рдЧ рдХреЛ рджреВрд░ рдХрд░ рджрд┐рдпрд╛ред
рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореИрдВ рдмрдЧ рдХреА рддрд▓рд╛рд╢ рдХреИрд╕реЗ рдХрд░ рд░рд╣рд╛ рдерд╛, рдореИрдВ рддреБрд░рдВрдд рдХрд╣реВрдВрдЧрд╛: рд╕рдорд╕реНрдпрд╛ рдПрдХ рдорд╛рдЗрдирд╕ рд╕рд╛рдЗрди рдереА, рдЬреЛ рдХрд┐рд╕реА рддрд░рд╣ рдХрд┐рд╕реА рддрд░рд╣ рдПрдирдХреЛрдб рд╣реЛ рдЧрдИред рдлрд┐рдХреНрд╕ рдПрдХ рдмреИрд╕рд╛рдЦреА рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ; рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдм рдкрд░ рдРрд╕реЗ рд▓реЛрдЧ рд╣реИрдВ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдПрдХ рд╕рдХреНрд╖рдо рд╕рдорд╛рдзрд╛рди рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ (рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдореБрдЭреЗ рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ рдФрд░ php рдореИрдиреБрдЕрд▓ рдкрд░ рдХреЛрдИ рдЬрд╡рд╛рдм рдирд╣реАрдВ рдорд┐рд▓рд╛, рд╢рд╛рдпрдж рдореИрдВ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рджреЗрдЦрд╛ рдерд╛?):
if (strlen($int) !== strlen($num)) { preg_match('/\d+/', $num, $m); $int = intval('-' . $m[0]); }
рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА
libxml рддреНрд░реБрдЯрд┐рдпрд╛рдБ
DOMDocument рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдореБрдЭреЗ E_WARNING рдорд┐рд▓рд╛ред рдЦреИрд░, рдбреЛрдо рдХреЗ рд╕рд╛рде рдпрд╣ рдкрд╣рд▓рд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд▓рдкреЗрдЯрд╛
libxml_use_internal_errors(true); $dom->loadHTML('html content'); libxml_clear_errors();
рдореИрдВ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕рдм рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдЪреНрдЫреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ libxml_use_internal_errors рдХреЛ рдирдП рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдЧрд▓рдд рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдФрд░ рдХреБрдЫ рднреА рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдлрд┐рд░ рдореИрдВрдиреЗ рдЗрд╕ рдХреНрд╖рдг рдХреЛ рдЫреЛрдбрд╝ рджреЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
DOMXpath
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, DOMXPath рд╡рд░реНрдЧ рдиреЗ рд▓рдбрд╝рд╛рдИ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛, рдЬреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рддрддреНрд╡реЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рдХрд╛рдо рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рд╕рдордЭрддрд╛ рдерд╛ рдХрд┐ рдореВрд▓ рддрддреНрд╡ div # comments рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬрд╛ред рдФрд░ xpath рдЕрдиреБрд░реЛрдз рдЦреБрдж рдХреЛ рд╕рдордЭрд╛рдпрд╛ред
DOMXPath-> рдХреНрд╡реЗрд░реА рдПрдХ DOMNodeList рджреЗрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдлрд╝рд╛рд░реНрдЪ рд▓реВрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рддреЗ рд╣реБрдП IDE рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдд: рдкреВрд░реНрдг рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП DOMElement [] рдХреЛ рдЬреЛрдбрд╝рд╛ред
рд╕рд╛рде рд╣реА, рдореИрдВрдиреЗ рдПрдХ рдХрд╕реНрдЯрдо рд╕рдВрджрд░реНрдн рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЕрдм рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЙрддреНрддрд░ рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рдП (рд╣рд╛рдБ рдХреНрдпрд╛ рдЫрд┐рдкрд╛рдирд╛ рд╣реИ, рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рднреА рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рдкреЗрдбрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд┐рд░ рд╕реЗ рдЪрд▓ рд╕рдХреЗ), рдФрд░ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрд╡реЗрд░реА рд╕рдВрджрд░реНрдн рдмрд╕ рд╕рдордп рдореЗрдВ рд╣реЛрдЧрд╛ред
private function query($query, DOMNode $context = null) { if ($context === null) { $context = $this->context; } return $this->xpath->query($query, $context); }
рдЕрдВрддрд┐рдо рдПрдЪрдЖрдИрдПрдо
рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ:
github.com/miraage/habrastatsрд╕реНрдерд╛рдиреАрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ habratopic.htm рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬрд╛, рддрд╛рдХрд┐ рд╣рд░ рдмрд╛рд░ рд╡рд┐рд╖рдп рд▓реЛрдб рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рди рдХрд░реЗрдВред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рд╖рдп рд╣реИ рд╣рдмреНрд░реИрдореНрдкред рдХреНрдпрд╛ рдореИрдВ habrastats.php? Id = XXXX рд╕реЗ рдЧреБрдЬрд░ рд╕рдХрддрд╛ рд╣реВрдВ
рдлрд┐рд▓рд╣рд╛рд▓ рдбреЗрдореЛ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИред
рдпреБрдкреАрдбреАред
рдХреЙрдорд░реЗрдб
рдЕрдирд╛рдо рдиреЗ рдПрдХ рдбреЗрдореЛ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛:
habrastats.m.tom.ruрдЕрджреНрдпрддрди
рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╣рдирд╛ рднреВрд▓ рдЧрдпрд╛! рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рд╕реНрдХреЗрдЪ рд╣реИред
рдореЗрд░реЗ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЛ рдХреИрд╕реЗ рд░реЗрдХ рдХрд░реЗрдВ - рдореИрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд▓рд╛рдКрдВрдЧрд╛ред
рдЕрдВрдд
рдореБрдЭреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ, рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд╢реА рд╣реЛрдЧреАред
рдкреБрдирд╢реНрдЪ
рдпрджрд┐, рдлрд┐рд░ рднреА, рдЖрдк рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рд╢рд╛рдЦрд╛ рдХреА рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗ рдмрдирд╛рдПрдВред
рдпрд╣ рд▓реЗрдЦ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрд┐рдЯ рдореЗрдВ рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред