X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=format.php;h=f931cdd8c3fc6afebe277a129e8862795848686e;hb=608ecf965408645758cdca1e5f01ff5ac3eff166;hp=395835d745db9b0aa1a3937579dd8653ff93d5f3;hpb=64d7a8bbe84719c88dee2457f32c82dd7380c018;p=wfpl.git diff --git a/format.php b/format.php index 395835d..f931cdd 100644 --- a/format.php +++ b/format.php @@ -45,19 +45,32 @@ function format_int($str) { return ereg_replace('^0*([0-9])', '\1', $str); } -function format_positive_decimal($str) { +function format_decimals($str) { + $str = ereg_replace('[^0-9]', '', $str); + return ereg_replace('^([0-9])0*', '\1', $str); +} + +function _format_positive_decimal($str) { $str = ereg_replace('[^0-9.]', '', $str); $pos = strpos($str, '.'); if($pos !== false) { $str = str_replace('.', '', $str); if($pos == 0) { - return '0.' . $str; + return '0.' . format_decimals($str); } elseif($pos == strlen($str)) { - return $str; + return format_int($str); } else { - return substr($str, 0, $pos) . '.' . substr($str, $pos); + return format_int(substr($str, 0, $pos)) . '.' . format_decimals(substr($str, $pos)); } } + return format_int($str); +} + +function format_positive_decimal($str) { + $str = _format_positive_decimal($str); + if($str === '0.0') { + $str = '0'; + } return $str; } @@ -65,7 +78,7 @@ function format_decimal($str) { $str = ereg_replace('[^0-9.-]', '', $str); if(substr($str, 0, 1) == '-') { $str = format_positive_decimal(substr($str, 1)); - if($str !== '' && $str !== '0' && $str != '0.0') { + if($str !== '' && $str !== '0') { $str = '-' . $str; } return $str; @@ -99,24 +112,50 @@ function format_filename($str, $allow_uppercase = false) { return ereg_replace('^[.-]', '_', $str); } +function format_path($str, $allow_uppercase = false) { + if(!$allow_uppercase) { + $str = strtolower($str); + } + $str = ereg_replace('[^a-zA-Z0-9_./-]', '_', $str); + return ereg_replace('^[.-]', '_', $str); +} + function client_path_to_filename($path) { $filename = ereg_replace(".*[:/\\]", '', $path); return format_filename($filename, true); } -function format_h_w_image($str) { +function format_image_w_h($str) { $fields = explode(' ', $str); if(count($fields) != 3) { return ''; } - list($width, $height, $filename) = $fields; + list($filename, $width, $height) = $fields; + $filename = format_path($filename); + $width = format_int_0($width); + $height = format_int_0($height); + + return "$filename $width $height"; +} + +function format_image_w_h_thumb_w_h($str) { + $fields = explode(' ', $str); + if(count($fields) != 6) { + die('count: ' . count($fields)); + return ''; + } + + list($filename, $width, $height, $thumb_filename, $thumb_width, $thumb_height) = $fields; + $filename = format_path($filename); $width = format_int_0($width); $height = format_int_0($height); - $filename = format_filename($filename); + $thumb_filename = format_path($thumb_filename); + $thumb_width = format_int_0($thumb_width); + $thumb_height = format_int_0($thumb_height); - return "$width $height $filename"; + return "$filename $width $height $thumb_filename $thumb_width $thumb_height"; } function format_varname($str) { @@ -156,8 +195,14 @@ function format_email($str) { } function format_url($str) { - # FIXME - return format_oneline($str); + # FIXME check for TLD? encode special chars? + $str = trim(format_oneline($str)); + if($str !== '') { + if(strpos($str, ':') === false) { + $str = 'http://' . $str; + } + } + return $str; } function format_money($str, $display_cents = true) { @@ -199,6 +244,62 @@ function format_mdy_to_ymd($str) { return mdy_to_ymd(format_oneline($str)); } +# date is yyyy-mm-dd +function format_ymd($str) { + require_once('code/wfpl/time.php'); + list($year, $month, $day) = ymd_clean($str); + return sprintf('%04u-%02u-%02u', $year, $month, $day); +} + +# takes any of: HH :MM HH:MM +# returns decimal number of hours +# +# You probably want to use format_hours() instead because it handles hours with a decimal point. +function format_hours_minutes($str) { + if(strlen($str) == 0) { + return $str; + } + $pos = strpos($str, ':'); + if($pos === false) { + $hours = format_int_0($str); + $minutes = 0; + } elseif($pos == 0) { + $hours = 0; + $minutes = format_int_0($str); + } else { + $hours = format_int_0(substr($str, 0, $pos)); + $minutes = format_int_0(substr($str, $pos + 1)); + } + return $hours + ($minutes / 60.0); +} + +# takes any of: HH :MM HH:MM HH.hh(decimal hours) +# returns decimal number of hours +function format_hours($str) { + if(strlen($str) == 0) { + return $str; + } + if(strpos($str, ':') !== false) { + return format_hours_minutes($str); + } else { + return format_decimal($str); + } +} + +# takes eg 12:23am +# returns decimal number of hours since midnight +function format_12hr_to_hours($str) { + if(eregi('noon', $str)) { + return 12; + } + $hours = format_hours($str); + if($hours < 12 && eregi('p', $str)) { + $hours += 12; + } + return $hours; +} + + function format_phone($str) { $str = ereg_replace('[^0-9]', '', $str); $str = ereg_replace('^1*', '', $str);