5个超级实用的PHP函数(function)


不实用打管理员,好不?


1.计算两个坐标之间的距离

当我们需要测量两点之间的距离,我们可以使用以下公式:半正矢公式(Haversine formula)和Vincenty公式。下面是这两个公式的应用函数,可以直接使用:

function haversineGreatCircleDistance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371000) {
  // convert from degrees to radians
  // From:www.uncletoo.com
  $latFrom = deg2rad($latitudeFrom);
  $lonFrom = deg2rad($longitudeFrom);
  $latTo = deg2rad($latitudeTo);
  $lonTo = deg2rad($longitudeTo);
  $latDelta = $latTo - $latFrom;
  $lonDelta = $lonTo - $lonFrom;
  $angle = 2 * asin(sqrt(pow(sin($latDelta / 2), 2) +
    cos($latFrom) * cos($latTo) * pow(sin($lonDelta / 2), 2)));
  return $angle * $earthRadius;
}
public static function vincentyGreatCircleDistance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371000) {
  // convert from degrees to radians
  // From:www.uncletoo.com
  $latFrom = deg2rad($latitudeFrom);
  $lonFrom = deg2rad($longitudeFrom);
  $latTo = deg2rad($latitudeTo);
  $lonTo = deg2rad($longitudeTo);
  $lonDelta = $lonTo - $lonFrom;
  $a = pow(cos($latTo) * sin($lonDelta), 2) +
    pow(cos($latFrom) * sin($latTo) - sin($latFrom) * cos($latTo) * cos($lonDelta), 2);
  $b = sin($latFrom) * sin($latTo) + cos($latFrom) * cos($latTo) * cos($lonDelta);
  $angle = atan2(sqrt($a), $b);
  return $angle * $earthRadius;
}
  • 参数解释:
    • float $latitudeFrom:起点维度
    • float $longitudeFrom:起点经度
    • float $latitudeTo:目标维度
    • float $longitudeTo:目标经度
    • float $earthRadius:地球半径(英里)

    函数返回返回两点之间的距离(英里)


    2.将PHP错误BUG通过Email发送到指定邮箱

function errorHandler($sMessage = '', $aVars = array()) {
    $sScript = $_SERVER['PHP_SELF'];
    $sParams = print_r($_REQUEST, true);
    $sVars = print_r($aVars, true);
    $aBackTrace = debug_backtrace();
    unset($aBackTrace[0]);
    $sBackTrace = print_r($aBackTrace, true);
    $sExplanation = <<<EOF
<p>Additional explanation: {$sMessage}</p>
<p>Additional variables: <pre>{$sVars}</pre></p><hr />
<p>Called script: {$sScript}</p>
<p>Request parameters: <pre>{$sParams}</pre></p><hr />
<p>Debug backtrace:</p>
<pre>{$sBackTrace}</pre>
EOF;
    $sHeader = "Subject: Error occurred\r\nContent-type: text/html; charset=UTF-8\r\n";
    error_log($sExplanation, 1, '[email protected]', $sHeader);
}
  • 此函数可以将你网站上发生的错误发送到指定邮箱中,这里只有两个参数:
    • string $sMessage:自定义消息
    • array $aVars:通过电子邮件发送的其他信息(数组)

3.将PDF转换为JPG

function pdfToJpg($pdf, $jpg) {
    $im = new Imagick();
    $im->setResolution(300,300);
    $im->readimage($pdf);
    $im->setImageFormat('jpeg');
    $im->writeImage($jpg);
    $im->clear();
    $im->destroy();
}
  • 这个函数可以将PDF文件转换为JPG格式的图片文件,他有两个参数:
    • string $pdf:PDF文件路径
    • string $jpg:转换后的图片文件路径

4.通过出生日期计算年龄

function getAge($birthdate = '0000-00-00') {
    if ($birthdate == '0000-00-00') return 'Unknown';
    $bits = explode('-', $birthdate);
    $age = date('Y') - $bits[0] - 1;
    $arr[1] = 'm';
    $arr[2] = 'd';
    for ($i = 1; $arr[$i]; $i++) {
        $n = date($arr[$i]);
        if ($n < $bits[$i])
            break;
        if ($n > $bits[$i]) {
            ++$age;
            break;
        }
    }
    return $age;
}
  • 将出生日期(格式:YYYY-MM-DD)传入此函数,即可输出年龄。

5.从ZIP压缩文件中提取文件

 

function unzipArchive($file, $destinationFolder){
// create ZipArchive object
$zip = new ZipArchive() ;
// open archive
if ($zip->open($file) !== TRUE) {
die ('Could not open archive');
}
// extract it's content to destination folder
$zip->extractTo($destinationFolder);
// close archive
$zip->close();
}
  • 参数:
    • string $file:ZIP压缩文件路径
    • string $destinationFolder:提取出的文件存放路径

不实用就在评论里喷吧

声明:Net-X|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 5个超级实用的PHP函数(function)


Carpe Diem and Do what I like