Home  >  Article  >  Backend Development  >  46 Very Useful PHP Code Snippets (3)

46 Very Useful PHP Code Snippets (3)

黄舟
黄舟Original
2016-12-21 09:27:281504browse

31. 删除文件夹内容

[代码]php代码:

function Delete($path)
{
    if (is_dir($path) === true)
    {
        $files = array_diff(scandir($path), array('.', '..'));
        foreach ($files as $file)
        {
            Delete(realpath($path) . '/' . $file);
        }
        return rmdir($path);
    }
    else if (is_file($path) === true)
    {
        return unlink($path);
    }
    return false;
}

语法:

5cb485669305e35f49adf0acaed573f7

32. 搜索和高亮字符串中的关键字

[代码]php代码:

function highlighter_text($text, $words)
{
    $split_words = explode( " " , $words );
    foreach($split_words as $word)
    {
        $color = "#4285F4";
        $text = preg_replace("|($word)|Ui" ,
            "<b>$1</b>" , $text );
    }
    return $text;
}

语法:

095b6327dd6af4c1e8488bf4ba48d9ee

33. 写入文件

1a093ffa11bc021b92c01f349153c6e9

34. 根据 URL 下载图片

[代码]php代码:

function imagefromURL($image,$rename)
{
$ch = curl_init($image);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$rawdata=curl_exec ($ch);
curl_close ($ch);
$fp = fopen("$rename",&#39;w&#39;);
fwrite($fp, $rawdata); 
fclose($fp);
}

语法:

55cad74196f5a29d72fb73ad54259754

35. 检测 URL 是否有效

[代码]php代码:

function isvalidURL($url)
{
$check = 0;
if (filter_var($url, FILTER_VALIDATE_URL) !== false) {
  $check = 1;
}
return $check;
}

语法:

63750954ff127deb2322f8eace8982ff

36. 生成二维码

[代码]php代码:

function qr_code($data, $type = "TXT", $size =&#39;150&#39;, $ec=&#39;L&#39;, $margin=&#39;0&#39;)  
{
     $types = array("URL" =--> "http://", "TEL" => "TEL:", "TXT"=>"", "EMAIL" => "MAILTO:");
    if(!in_array($type,array("URL", "TEL", "TXT", "EMAIL")))
    {
        $type = "TXT";
    }
    if (!preg_match(&#39;/^&#39;.$types[$type].&#39;/&#39;, $data))
    {
        $data = str_replace("\\", "", $types[$type]).$data;
    }
    $ch = curl_init();
    $data = urlencode($data);
    curl_setopt($ch, CURLOPT_URL, &#39;http://chart.apis.google.com/chart&#39;);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, &#39;chs=&#39;.$size.&#39;x&#39;.$size.&#39;&cht=qr&chld=&#39;.$ec.&#39;|&#39;.$margin.&#39;&chl=&#39;.$data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    $response = curl_exec($ch);
    curl_close($ch);
    return $response;
}

语法:

f40c20712513752286dc8707de74fb4f

37. 计算两个地图坐标之间的距离

[代码]php代码:

function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2) {
    $theta = $longitude1 - $longitude2;
    $miles = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta)));
    $miles = acos($miles);
    $miles = rad2deg($miles);
    $miles = $miles * 60 * 1.1515;
    $feet = $miles * 5280;
    $yards = $feet / 3;
    $kilometers = $miles * 1.609344;
    $meters = $kilometers * 1000;
    return compact(&#39;miles&#39;,&#39;feet&#39;,&#39;yards&#39;,&#39;kilometers&#39;,&#39;meters&#39;); 
}

语法:

5ddac8307cb4a188e7b6dc0b4795dace 40.770623, 'long' => -73.964367);

$point2 = array('lat' => 40.758224, 'long' => -73.917404);

$distance = getDistanceBetweenPointsNew($point1['lat'], $point1['long'], $point2['lat'], $point2['long']);

foreach ($distance as $unit => $value) {

    echo $unit.': '.number_format($value,4).'df250b2156c434f3390392d09b1c9563';

}

?>

38. 获取一个特定话题标签的所有 Tweets

[代码]php代码:

function getTweets($hash_tag) {
    $url = &#39;http://search.twitter.com/search.atom?q=&#39;.urlencode($hash_tag) ;
    echo "<p>Connecting to <strong>$url</strong> ...</p>";
    $ch = curl_init($url);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $xml = curl_exec ($ch);
    curl_close ($ch);
    //If you want to see the response from Twitter, uncomment this next part out:
    //echo "<p>Response:</p>";
    //echo "<pre class="brush:php;toolbar:false">".htmlspecialchars($xml)."
"; $affected = 0; $twelement = new SimpleXMLElement($xml); foreach ($twelement->entry as $entry) { $text = trim($entry->title); $author = trim($entry->author->name); $time = strtotime($entry->published); $id = $entry->id; echo "

Tweet from ".$author.": ".$text." Posted ".date('n/j/y g:i a',$time)."

"; } return true ; }

39. 添加 th,st,nd 或者 rd 作为数字的后缀

Friday the 13th

[代码]php代码:

function ordinal($cdnl){ 
    $test_c = abs($cdnl) % 10; 
    $ext = ((abs($cdnl) %100 < 21 && abs($cdnl) %100 > 4) ? &#39;th&#39;
            : (($test_c < 4) ? ($test_c < 3) ? ($test_c < 2) ? ($test_c < 1) 
            ? &#39;th&#39; : &#39;st&#39; : &#39;nd&#39; : &#39;rd&#39; : &#39;th&#39;)); 
    return $cdnl.$ext; 
}

语法:

461a93a80e88273e2af748eec0fd504b

40. 限制文件下载的速度

[代码]php代码:

<!--?php
// local file that should be send to the client
$local_file = &#39;test-file.zip&#39;;
// filename that the user gets as default
$download_file = &#39;your-download-name.zip&#39;;
  
// set the download rate limit (=--> 20,5 kb/s)
$download_rate = 20.5; 
if(file_exists($local_file) && is_file($local_file)) {
    // send headers
    header(&#39;Cache-control: private&#39;);
    header(&#39;Content-Type: application/octet-stream&#39;); 
    header(&#39;Content-Length: &#39;.filesize($local_file));
    header(&#39;Content-Disposition: filename=&#39;.$download_file);
  
    // flush content
    flush();    
    // open file stream
    $file = fopen($local_file, "r");    
    while(!feof($file)) {
  
        // send the current file part to the browser
        print fread($file, round($download_rate * 1024));    
  
        // flush the content to the browser
        flush();
  
        // sleep one second
        sleep(1);    
    }    
  
    // close file stream
    fclose($file);}
else {
    die(&#39;Error: The file &#39;.$local_file.&#39; does not exist!&#39;);
}
?>

41. 把文本转换成图片

85ea8d12ff171b1fbe7e98f4dd96d95b

42. 获取远程文件的大小 

[代码]php代码:

function remote_filesize($url, $user = "", $pw = "")
{
    ob_start();
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    if(!empty($user) && !empty($pw))
    {
        $headers = array(&#39;Authorization: Basic &#39; .  <a href="http://www.php-z.com/" target="_blank" class="relatedlink">Base</a>64_encode("$user:$pw"));
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    }
    $ok = curl_exec($ch);
    curl_close($ch);
    $head = ob_get_contents();
    ob_end_clean();
    $regex = &#39;/Content-Length:\s([0-9].+?)\s/&#39;;
    $count = preg_match($regex, $head, $matches);
    return isset($matches[1]) ? $matches[1] : "unknown";
}

语法:

f263b6dcc7a0b42dbc3e85f9404fa88e

43. 使用 imagebrick 进行 pdf 到图像的转换

$pdf_file   = './pdf/demo.pdf';

$save_to    = './jpg/demo.jpg';     //make sure that Apache has permissions to write in this folder! (common problem)

//execute ImageMagick command 'convert' and convert PDF to JPG with applied settings

exec('convert "'.$pdf_file.'" -colorspace RGB -resize 800 "'.$save_to.'"', $output, $return_var);

if($return_var == 0) {              //if exec successfuly converted pdf to jpg

    print "Conversion OK";

}

else print "Conversion failed.df250b2156c434f3390392d09b1c9563".$output;

?>

44. 使用 tinyurl 生成短网址

[代码]php代码:

function get_tiny_url($url)  
{  
    $ch = curl_init();  
    $timeout = 5;  
    curl_setopt($ch,CURLOPT_URL,&#39;http://tinyurl.com/api-create.php?url=&#39;.$url);  
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);  
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);  
    $data = curl_exec($ch);  
    curl_close($ch);  
    return $data;  
}

语法:

d18c8180aa515c10acd2af9677706f32

45. youtube 下载链接生成器

使用下面的 PHP 片段可以让你的用户下载 Youtube 视频

[代码]php代码:

function str_between($string, $start, $end)
{ 
$string = " ".$string; $ini = strpos($string,$start); if ($ini == 0) return ""; $ini += strlen($start); $len = strpos($string,$end,$ini) - $ini; return substr($string,$ini,$len); }
function get_youtube_download_link(){
    $youtube_link = $_GET[&#39;youtube&#39;];
    $youtube_page = file_get_contents($youtube_link);
    $v_id = str_between($youtube_page, "&video_id=", "&");
    $t_id = str_between($youtube_page, "&t=", "&");
    $flv_link = "http://www.youtube.com/get_video?video_id=$v_id&t=$t_id";
    $hq_flv_link = "http://www.youtube.com/get_video?video_id=$v_id&t=$t_id&fmt=6";
    $mp4_link = "http://www.youtube.com/get_video?video_id=$v_id&t=$t_id&fmt=18";
    $threegp_link = "http://www.youtube.com/get_video?video_id=$v_id&t=$t_id&fmt=17";
    echo "\t\tDownload (right-click > save as):\n\t\t";
    echo "<a href="\"$flv_link\"">FLV</a>\n\t\t";
    echo "<a href="\"$hq_flv_link\"">HQ FLV (if available)</a>\n\t\t";
    echo "<a href="\"$mp4_link\"">MP4</a>\n\t\t";
    echo "<a href="\"$threegp_link\"">3GP</a><br><br>\n";
}

46. Facebook 样式的时间戳

Facebook (x mins age, y hours ago etc)

[代码]php代码:

function nicetime($date)
{
    if(empty($date)) {
        return "No date provided";
    }
     
    $periods         = array("second", "minute", "hour", "day", "week", "month", "year", "decade");
    $lengths         = array("60","60","24","7","4.35","12","10");
     
    $now             = time();
    $unix_date         = strtotime($date);
     
       // check validity of date
    if(empty($unix_date)) {    
        return "Bad date";
    }
    // is it future date or past date
    if($now > $unix_date) {    
        $difference     = $now - $unix_date;
        $tense         = "ago";
         
    } else {
        $difference     = $unix_date - $now;
        $tense         = "from now";
    }
     
    for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
        $difference /= $lengths[$j];
    }
     
    $difference = round($difference);
     
    if($difference != 1) {
        $periods[$j].= "s";
    }
     
    return "$difference $periods[$j] {$tense}";
}

语法:

f94046d4aadcbaa78082f3f8b5bb926f

 以上就是46 个非常有用的 PHP 代码片段(三)的内容,更多相关内容请关注PHP中文网(www.php.cn)! 


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn