content = $cont; return $this; } public function setContent($cont){ return $this->rArr($cont); } public function getTable($content = '', $reg = "|]*>(.*?)|si"){ preg_match($reg, (empty($content) ? $this->content : $content), $match); return $this->rArr($match[1]); } public function getRows($reg = '|]*>|i', $content = ''){ $result = preg_split($reg, (empty($content) ? $this->content : $content)); return $this->rArr($result); } public function getColumns($reg = "|]*>([^>]*)|si"){ $rarr = array(); foreach($this->content as $player){ preg_match_all($reg, $player, $matches); $rarr[] = $matches[1]; } return $this->rArr($rarr); } public function shift(){ array_shift($this->content); return $this; } public function sum($bykey){ $rarr = array(); foreach($this->content as $player){ $cur_val = $player[ $bykey ]; if(!isset($rarr[ $cur_val ])) $rarr[ $cur_val ] = $player; else{ foreach($player as $key => $value){ if(is_numeric($value)) $rarr[ $cur_val ][ $key ] += $value; } } } return $this->rArr($rarr); } public function convertChar($from, $to, $avoidKeys = array()){ foreach($this->content as &$player){ foreach($player as $key => &$value){ if(!in_array($key, $avoidKeys)) $value = str_replace($from, $to, $value); } } return $this; } public function removeHtml($reg){ $rarr = array(); foreach($this->content as $player){ $rarr[] = trim(preg_replace($reg, '', $player)); } return $this->rArr($rarr); } public function getInputValue($name, $content){ preg_match("|]*name=['\"]{$name}['\"][^>]*)>|", $content, $match); return $this->getMatch("|value=['\"](.*?)['\"]|", $match[1]); } public function setStartEndDate(){ $cur_day = date('d'); $this->start_date = $cur_day == '01' ? date('Y-m', strtotime('-1 month')).'-01' : date('Y-m').'-01'; $this->end_date = date('Y-m-d'); return $this; } public function setCurMonth($override = array(), $date = '', $format = '%b'){ $date = empty($date) ? $this->start_date : $date; if(empty($override)) $this->month = strftime($format, strtotime($date)); else{ $month_num = (int)strftime('%m', strtotime($date)); $this->month = $override[ $month_num - 1 ]; } return $this; } public function nextMonth($format = '%m'){ return $this->getFuture("+1 month", $format); } public function getFuture($modifier = "+1 month", $format = '%m'){ return strftime($format, strtotime($modifier)); } public function setCurYear($date = '', $format = '%y'){ $date = empty($date) ? $this->start_date : $date; $this->year = strftime($format, strtotime($date)); return $this; } public function getMatch($reg, $content){ preg_match($reg, $content, $match); return $match[1]; } public function getTag($tag, $content, $end_tag = ''){ $end_tag = empty($end_tag) ? $tag : $end_tag; return $this->getMatch("|<$tag>(.+?)|si", $content); } public function getOptionValue($content, $label, $modifier = ''){ return $this->getAttrValue($content, 'option', 'value', $label, $modifier); } public function getAttrValue($content, $tag, $attr_name, $tag_content = '[^<]*', $modifier = ''){ return $this->getMatch("|<$tag [^>]*$attr_name=['\"](.*?)['\"][^>]*>$tag_content|$modifier", $content); } public function getContent(){ return $this->content; } public function pop(){ array_pop($this->content); return $this; } public function trim(){ foreach($this->content as &$player){ foreach($player as &$field) $field = trim($field); } return $this; } public function addTo($add, $to){ foreach($this->content as &$player){ $player[ $to ] += trim($player[ $add ]); } return $this; } public function rmDollarTrim($value){ return trim(str_replace('$', '', $value)); } public function isNumeric($value){ return is_numeric( str_replace(',', '.', $this->rmDollarTrim($value)) ); } public function hasPlayer($username, $players = null, $key = 'handle'){ $players = empty($players) ? $this->content : $players; foreach($players as $player){ if($player[$key] == $username) return true; } return false; } public function merge($content){ return $this->rArr(array_merge($this->content, $content)); } public function clean(){ $rarr = array(); foreach($this->content as $player){ $ok = false; foreach($player as $field){ if($this->isNumeric($field)) $ok = true; } if($ok) $rarr[] = $player; } return $this->rArr($rarr); } public function keepWhere($keep_key, $keep_value){ $rarr = array(); foreach($this->content as $player){ if(is_array($keep_value)){ if(in_array($player[ $keep_key ], $keep_value)) $rarr[] = $player; }else if($player[ $keep_key ] == $keep_value) $rarr[] = $player; } return $this->rArr($rarr); } }