首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[分享]揭秘PHP编程:50个实用代码片段轻松提升开发效率

发布于 2025-07-16 14:12:10
0
1346

引言PHP作为一种广泛使用的开源脚本语言,在Web开发领域扮演着重要角色。掌握一些实用的代码片段可以极大地提高开发效率,解决日常遇到的问题。本文将分享50个PHP实用代码片段,涵盖从数据操作到安全验证...

引言

PHP作为一种广泛使用的开源脚本语言,在Web开发领域扮演着重要角色。掌握一些实用的代码片段可以极大地提高开发效率,解决日常遇到的问题。本文将分享50个PHP实用代码片段,涵盖从数据操作到安全验证等多个方面,帮助PHP开发者提升编程技能。

1. 从PHP数据创建CSV文件

function generateCsv($data, $delimiter = ',', $enclosure = '"') { $file = fopen('php://temp', 'r+'); foreach ($data as $line) { fputcsv($file, $line, $delimiter, $enclosure); } rewind($file); $contents = ''; while (!feof($file)) { $contents .= fread($file, 8192); } fclose($file); return $contents;
}

2. 解析XML数据

$xmlString = '<moleculedb> <molecule name="Benzine"> <symbol>ben</symbol> <code>A</code> </molecule> <molecule name="Water"> <symbol>h2o</symbol> <code>B</code> </molecule>
</moleculedb>';
$xml = simplexml_load_string($xmlString);
foreach ($xml->molecule as $molecule) { echo $molecule['name'] . '<br>';
}

3. 解析JSON数据

$jsonString = '{"name":"John", "age":30, "city":"New York"}';
$jsonData = json_decode($jsonString, true);
echo $jsonData['name'];

4. 获取当前页面URL

$currentUrl = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
echo $currentUrl;

5. 从任意的Twitter账号获取最新的Tweet

// 需要安装Twitter API客户端库
use AbrahamTwitterOAuthTwitterOAuth;
$consumerKey = 'YOUR_CONSUMER_KEY';
$consumerSecret = 'YOUR_CONSUMER_SECRET';
$accessToken = 'YOUR_ACCESS_TOKEN';
$accessTokenSecret = 'YOUR_ACCESS_TOKEN_SECRET';
$connection = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
$twitterData = $connection->get("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterapi&count=1");
echo $twitterData->text;

6. 计算两个日期的差

$startDate = '2020-01-01';
$endDate = '2020-12-31';
$interval = date_diff(date_create($startDate), date_create($endDate));
echo $interval->format('%a days');

7. 删除文件夹内容

function deleteDirectory($dir) { if (!file_exists($dir)) { return true; } if (!is_dir($dir)) { return unlink($dir); } foreach (scandir($dir) as $item) { if ($item == '.' || $item == '..') { continue; } if (!deleteDirectory($dir . DIRECTORY_SEPARATOR . $item)) { return false; } } return rmdir($dir);
}

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

function highlightKeyword($text, $keyword) { return preg_replace('/(' . preg_quote($keyword, '/') . ')/i', '<span style="background-color: yellow;">\1</span>', $text);
}

9. 写入文件

$fileContent = "Hello, World!";
file_put_contents('example.txt', $fileContent);

10. 根据URL下载图片

function downloadImage($imageUrl, $savePath) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $imageUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $imageData = curl_exec($ch); curl_close($ch); file_put_contents($savePath, $imageData);
}

11. 检测URL是否有效

function isValidUrl($url) { return filter_var($url, FILTER_VALIDATE_URL) !== false;
}

12. 生成二维码

function generateQRCode($text, $size = 300) { QRcode::png($text, 'qrcode.png', QR_ECLEVEL_L, $size);
}

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

function calculateDistance($lat1, $lon1, $lat2, $lon2) { $earthRadius = 6371; // 地球半径,单位千米 $latFrom = deg2rad($lat1); $lonFrom = deg2rad($lon1); $latTo = deg2rad($lat2); $lonTo = deg2rad($lon2); $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;
}

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

// 需要安装Twitter API客户端库
use AbrahamTwitterOAuthTwitterOAuth;
$consumerKey = 'YOUR_CONSUMER_KEY';
$consumerSecret = 'YOUR_CONSUMER_SECRET';
$accessToken = 'YOUR_ACCESS_TOKEN';
$accessTokenSecret = 'YOUR_ACCESS_TOKEN_SECRET';
$connection = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
$twitterData = $connection->get("https://api.twitter.com/1.1/search/tweets.json?q=%23话题标签&count=10");
foreach ($twitterData->statuses as $tweet) { echo $tweet->text . '<br>';
}

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

function addSuffix($number) { if ($number < 20) { return $number . "th"; } $lastDigit = $number % 10; if ($lastDigit == 1) { return $number . "st"; } elseif ($lastDigit == 2) { return $number . "nd"; } elseif ($lastDigit == 3) { return $number . "rd"; } else { return $number . "th"; }
}

16. 限制文件下载的速度

function limitDownloadSpeed($maxSpeed) { $maxSpeed *= 1024; // 将速度转换为字节每秒 $handle = fopen('example.txt', 'rb'); while (!feof($handle)) { $buffer = fread($handle, 1024); usleep($maxSpeed); echo $buffer; } fclose($handle);
}

17. 把文本转换成图片

function textToImage($text, $fontSize = 20, $fontFile = 'arial.ttf', $width = 500, $height = 100) { $image = imagecreatetruecolor($width, $height); $color = imagecolorallocate($image, 255, 255, 255); imagefilledrectangle($image, 0, 0, $width, $height, $color); $color = imagecolorallocate($image, 0, 0, 0); imagettftext($image, $fontSize, 0, 10, 30, $color, $fontFile, $text); imagepng($image); imagedestroy($image);
}

18. 获取远程文件的大小

function getRemoteFileSize($url) { $headers = get_headers($url); $fileSize = strpos($headers[0], '200'); if ($fileSize) { $fileSize = substr($headers[5], strpos($headers[5], ':') + 2); return $fileSize; } return 0;
}

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

function pdfToImage($pdfPath, $imagePath, $page = 1) { $imagebrick = new Imagebrick(); $imagebrick->setPdf($pdfPath, $page); $imagebrick->save($imagePath);
}

20. 使用GD库生成缩略图

function createThumbnail($sourcePath, $destinationPath, $width, $height) { $image = imagecreatefromjpeg($sourcePath); $canvas = imagecreatetruecolor($width, $height); imagecopyresampled($canvas, $image, 0, 0, 0, 0, $width, $height, imagesx($image), imagesy($image)); imagejpeg($canvas, $destinationPath); imagedestroy($image); imagedestroy($canvas);
}

21. 使用PHP Mailer发送邮件

use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;
require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';
$mail = new PHPMailer(true);
try { $mail->isSMTP(); $mail->Host = 'smtp.example.com'; $mail->SMTPAuth = true; $mail->Username = 'username@example.com'; $mail->Password = 'password'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->setFrom('username@example.com', 'Mailer'); $mail->addAddress('recipient@example.com', 'Recipient Name'); $mail->isHTML(true); $mail->Subject = 'Here is the subject'; $mail->Body = 'This is the HTML message body <b>in bold!</b>'; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; $mail->send(); echo 'Message has been sent';
} catch (Exception $e) { echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

22. 使用cURL发送HTTP请求

function sendHttpRequest($url, $method = 'GET', $data = []) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); if ($method == 'POST' || $method == 'PUT') { curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); } $response = curl_exec($ch); curl_close($ch); return $response;
}

23. 使用Redis缓存

function cache($key, $value, $duration = 3600) { $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $redis->set($key, $value, $duration);
}

24. 使用Memcached缓存

function cache($key, $value, $duration = 3600) { $memcached = new Memcached(); $memcached->addServer('127.0.0.1', 11211); $memcached->set($key, $value, $duration);
}

25. 使用OAuth2进行身份验证

function getAccessToken($client_id, $client_secret, $redirect_uri, $code) { $url = 'https://example.com/oauth2/token'; $data = [ 'grant_type' => 'authorization_code', 'client_id' => $client_id, 'client_secret' => $client_secret, 'redirect_uri' => $redirect_uri, 'code' => $code ]; $response = file_get_contents($url, false, stream_context_create([ 'http' => [ 'method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencodedrn", 'content' => http_build_query($data) ] ])); return json_decode($response, true);
}

26. 使用JWT进行身份验证

function createJwt($payload, $key) { return JWT::encode($payload, $key);
}

27. 使用OAuth1进行身份验证

function getOAuthToken($consumerKey, $consumerSecret, $tokenSecret, $callbackUrl, $requestTokenUrl, $accessTokenUrl) { $url = $requestTokenUrl; $data = [ 'oauth_consumer_key' => $consumerKey, 'oauth_signature_method' => 'HMAC-SHA1', 'oauth_token' => '', 'oauth_callback' => $callbackUrl, ]; $signature = urlencode(oauth_signature($data, $consumerSecret, $tokenSecret)); $url .= '?' . http_build_query($data) . '&oauth_signature=' . $signature; $response = file_get_contents($url); $tokens = explode('&', $response); $requestToken = ''; $tokenSecret = ''; foreach ($tokens as $token) { list($key, $value) = explode('=', $token); if ($key == 'oauth_token') { $requestToken = $value; } elseif ($key == 'oauth_token_secret') { $tokenSecret = $value; } } $url = $accessTokenUrl; $data = [ 'oauth_consumer_key' => $consumerKey, 'oauth_token' => $requestToken, 'oauth_signature_method' => 'HMAC-SHA1', 'oauth_token_secret' => $tokenSecret, 'oauth_signature' => urlencode(oauth_signature($data, $consumerSecret, $tokenSecret)), ]; $url .= '?' . http_build_query($data); $response = file_get_contents($url); $tokens = explode('&', $response); $accessToken = ''; $accessTokenSecret = ''; foreach ($tokens as $token) { list($key, $value) = explode('=', $token); if ($key == 'oauth_token') { $accessToken = $value; } elseif ($key == 'oauth_token_secret') { $accessTokenSecret = $value; } } return [ 'accessToken' => $accessToken, 'accessTokenSecret' => $accessTokenSecret, ];
}

28. 使用OAuth2进行单点登录

function getSingleSignOnToken($client_id, $client_secret, $redirect_uri, $code) { $url = 'https://example.com/oauth2/token'; $data = [ 'grant_type' => 'authorization_code', 'client_id' => $client_id, 'client_secret' => $client_secret, 'redirect_uri' => $redirect_uri, 'code' => $code ]; $response = file_get_contents($url, false, stream_context_create([ 'http' => [ 'method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencodedrn", 'content' => http_build_query($data) ] ])); return json_decode($response, true);
}

29. 使用JWT进行单点登录

function createJwt($payload, $key) { return JWT::encode($payload, $key);
}

30. 使用OAuth1进行单点登录

function getSingleSignOnToken($consumerKey, $consumerSecret, $tokenSecret, $callbackUrl, $requestTokenUrl, $accessTokenUrl) { $url = $requestTokenUrl; $data = [ 'oauth_consumer_key' => $consumerKey, 'oauth_signature_method' => 'HMAC-SHA1', 'oauth_token' => '', 'oauth_callback' => $callbackUrl, ]; $signature = urlencode(oauth_signature($data, $consumerSecret, $tokenSecret)); $url .= '?' . http_build_query($data) . '&oauth_signature=' . $signature; $response = file_get_contents($url); $tokens = explode('&', $response); $requestToken = ''; $tokenSecret = ''; foreach ($tokens as $token) { list($key, $value) = explode('=', $token); if ($key == 'oauth_token') { $requestToken = $value; } elseif ($key == 'oauth_token_secret') { $tokenSecret = $value; } } $url = $accessTokenUrl; $data = [ 'oauth_consumer_key' => $consumerKey, 'oauth_token' => $requestToken, 'oauth_signature_method' => 'HMAC-SHA1', 'oauth_token_secret' => $tokenSecret, 'oauth_signature' => urlencode(oauth_signature($data, $consumerSecret, $tokenSecret)), ]; $url .= '?' . http_build_query($data); $response = file_get_contents($url); $tokens = explode('&', $response); $accessToken = ''; $accessTokenSecret = ''; foreach ($tokens as $token) { list($key, $value) = explode('=', $token); if ($key == 'oauth_token') { $accessToken = $value; } elseif ($key == 'oauth_token_secret') { $accessTokenSecret = $value; } } return [ 'accessToken' => $accessToken, 'accessTokenSecret' => $accessTokenSecret, ];
}

31. 使用OAuth2进行资源所有者密码凭据流

”`php function getResourceOwnerPasswordCredentialsToken((client_id, )client_secret, (username, )password) {

$url = 'https://example.com/oauth2/token';
$data = [ 'grant_type' => 'password_credentials', 'client_id' => $client_id, 'client_secret' => $client_secret, 'username' => $username, 'password' => $password
];
$response = file_get_contents($url, false, stream_context_create([ 'http' => [ 'method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencodedrn", 'content' => http_build_query($data) ]
]));
return json
评论
一个月内的热帖推荐
极兔cdn
Lv.1普通用户

3

帖子

6

小组

37

积分

赞助商广告
站长交流