您好,UncleToo欢迎您!  为了更好的浏览本站,请使用高版本浏览器
RSS  Tag     设为首页 | 加入收藏
 您所在的位置:首页 > PHP技术 > PHP应用

5个有用且有趣的PHP函数代码

作者:UncleToo  来源:翻译  日期:2014-06-23 13:05:46
收藏  评论:( 1 )  阅读:847

5个有用且有趣的PHP函数代码

PHP是使用最广泛的服务器端编程的脚本语言之一。在本片文章中,UncleToo为大家整理里几个非常有用且很有趣的PHP功能函数,这些都是完整可用的,可以直接应用到你的开发项目类库中。


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, 'admin@uncletoo.com', $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:提取出的文件存放路径


原文(英文)地址:http://www.script-tutorials.com/useful-php-snippets/



PHP
 
函数
 
除非特别声明,本站所有PHP教程及其他教程/文章均为原创、翻译或网友投稿,版权均归UncleToo中文网所有, 转载请注明作者及出处。
原文网址:http://www.uncletoo.com/html/application/993.html
读完这篇文章后,你是否有所收获? 分享是一种生活的信念!
  • 0
  • 0
我来说两句
更多>>网友评论