$max) return $max; return $v; } function pick_entry_from_range($array, $value) { if(!is_array($array)) return []; $result = []; foreach($array as $pv) if($value >= $pv['from'] && $value <= $pv['to']) $result = $pv; return $result; } /** * Can have any number of arguments. Returns the first of its arguments that is not false, empty string, or null. */ function first() { $args = func_get_args(); foreach($args as $v) { if(isset($v) && $v !== false && $v !== '' && $v !== null) return($v); } return(''); } function alnum($s, $replace_with = '_', $trim = true) { if($trim) $s = trim(strtolower($s)); return(preg_replace("/[^[:alnum:][:space:]]/u", $replace_with, $s)); } /** * Append a string to the given file. */ function write_to_file($filename, $content) { if (is_array($content)) $content = json_encode($content); $open = fopen($filename, 'a+'); fwrite($open, $content); fclose($open); @chmod($filename, 0777); } # **************************** ARRAY FUNCTIONS ****************************** /** * Returns a value from the $GLOBALS['config'] array identified by $key. * Sub-array values can be addressed by using the '/' character as a separator. */ function cfg($key) { $config = $GLOBALS['config']; $seg = explode('/', $key); $lastSeg = array_pop($seg); foreach($seg as $s) { if(is_array($config) && array_key_exists($s, $config) && is_array($config[$s])) $config = $config[$s]; else return null; } if(!is_array($config) || !array_key_exists($lastSeg, $config)) return null; return($config[$lastSeg]); } # **************************** STRING/FORMATTING FUNCTIONS ****************************** /** * Convert any base number into another number of another base system. */ function base_convert_any($numberInput, $fromBaseInput, $toBaseInput) { if ($fromBaseInput==$toBaseInput) return $numberInput; $fromBase = str_split($fromBaseInput,1); $toBase = str_split($toBaseInput,1); $number = str_split($numberInput,1); $fromLen=strlen($fromBaseInput); $toLen=strlen($toBaseInput); $numberLen=strlen($numberInput); $retval=''; if ($toBaseInput == '0123456789') { $retval=0; for ($i = 1;$i <= $numberLen; $i++) $retval = bcadd($retval, bcmul(array_search($number[$i-1], $fromBase),bcpow($fromLen,$numberLen-$i))); return $retval; } if ($fromBaseInput != '0123456789') $base10=base_convert_any($numberInput, $fromBaseInput, '0123456789'); else $base10 = $numberInput; if ($base10