10个常用的PHP实用代码片段
本文精选了10个实用的PHP代码片段,包括关键词高亮、自动密码生成和缓存控制等场景,提供即插即用的解决方案以简化开发流程。
搜索结果关键词高亮
在处理搜索功能时,将匹配的关键字在返回结果中进行视觉高亮是提升用户体验的有效手段。该函数通过正则表达式精准定位单词边界,并将匹配的词汇包裹在带有黄色背景样式的 <strong> 标签中。
function highlight($sString, $aWords) {
if (!is_array($aWords) || empty($aWords) || !is_string($sString)) {
return false;
}
$sWords = implode('|', $aWords);
// 使用 i 标志进行不区分大小写匹配,u 标志确保 UTF-8 安全
return preg_replace('@\b('.$sWords.')\b@si', '$1', $sString);
}
获取 Feedburner 订阅数据
对于基于 RSS 的博客系统,实时统计订阅人数很有必要。此函数调用 Google Feedburner API,抓取指定时间段内的平均阅读量。请注意,该接口依赖于 Google 的服务状态。
function get_average_readers($feed_id, $interval = 7) {
$today = date('Y-m-d', strtotime('now'));
$ago = date('Y-m-d', strtotime('-' . $interval . ' days'));
// 注意:建议后续升级为 HTTPS
$feed_url = "https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=" . $feed_id . "&dates=" . $ago . "," . $today;
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $feed_url);
$data = curl_exec($ch);
curl_close($ch);
$xml = new SimpleXMLElement($data);
// 累加每日的 circulation (传播量)
$nb = 0;
foreach($xml->feed->children() as $circ) {
$nb += $circ['circulation'];
}
return round($nb / $interval);
}
自动生成高强度密码
在用户注册或重置密码场景中,需要一个既安全又易读(可选)的密码生成器。该函数根据预设强度等级,混合元音、辅音、数字及特殊符号生成随机字符串。
function generatePassword($length=9, $strength=0) {
$vowels = 'aeuy';
$consonants = 'bdghjmnpqrstvz';
if ($strength >= 1) {
$consonants .= 'BDGHJLMNPQRSTVWXZ';
}
if ($strength >= 2) {
$vowels .= "AEUY";
}
if ($strength >= 4) {
$consonants .= '23456789';
}
if ($strength >= 8 ) {
$vowels .= '@#$%';
}
$password = '';
$alt = time() % 2;
for ($i = 0; $i < $length; $i++) {
if ($alt == 1) {
$password .= $consonants[(rand() % strlen($consonants))];
$alt = 0;
} else {
$password .= $vowels[(rand() % strlen($vowels))];
$alt = 1;
}
}
return $password;
}
合并并压缩多个 CSS 文件
为了减少 HTTP 请求数量并减小传输体积,可以将多个样式表合并为一个。该示例展示了如何利用输出缓冲(Output Buffering)函数,在服务器端移除空白字符和注释后一次性输出压缩后的 CSS。
header('Content-type: text/css');
ob_start("compress");
function compress($buffer) {
/* 移除 CSS 注释 */
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
/* 移除多余空格、换行和制表符 */
$buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer);
return $buffer;
}
/* 引入你的 CSS 文件 */
include('master.css');
include('typography.css');
include('grid.css');
ob_end_flush();
一键生成短网址
分享长链接时,短链接不仅美观且易于记录。这里利用 TinyURL 公开 API 实现极简的跳转缩短功能。生产环境中建议自建短链服务以增加稳定性。
function getTinyUrl($url) {
// 实际使用中请处理可能的网络错误或 URL 非法情况
return file_get_contents("http://tinyurl.com/api-create.php?url=" . $url);
}
精确计算周岁年龄
通过生日计算年龄涉及月份和日期的借位判断,简单的年份相减往往不准确。该函数通过对比当前日期的月、日差值,逻辑严密地得出实足年龄。
function age($date){
$time = strtotime($date);
if(FALSE === $time){
return '';
}
$current_date = date('Y-m-d');
list($year,$month,$day) = explode("-", $date);
list($cy,$cm,$cd) = explode("-", $current_date);
$year_diff = $cy - $year;
$month_diff = $cm - $month;
$day_diff = $cd - $day;
// 如果日期或月份为负数,说明今年还没过生日,需减去一岁
if ($day_diff < 0 || $month_diff < 0) {
$year_diff--;
}
return $year_diff;
}
计算 PHP 脚本执行时间
性能分析的基础是了解代码耗时。利用 microtime(true) 获取带微秒的时间戳,可以精确到小数点后多位,常用于检测复杂查询或循环的性能瓶颈。
// 记录开始时间
$time_start = microtime(true);
// ... 在此处放置需要测试的代码块 ...
// 记录结束时间
$time_end = microtime(true);
// 计算差值并输出
$time = $time_end - $time_start;
echo 'Script took ' . $time . ' seconds to execute';
切换网站维护模式
在进行数据库迁移或重大更新时,通常需要暂停对外服务。此函数通过检查当前文件名来重定向流量至特定的维护页面,防止用户看到报错信息。注意:实际部署时需替换 maintenance.php 路径。
function maintenance($mode = FALSE){
if($mode) { // 进入维护模式
if(basename($_SERVER['SCRIPT_FILENAME']) != 'maintenance.php') {
header("Location: http://example.com/maintenance.php");
exit;
}
} else { // 退出维护模式
if(basename($_SERVER['SCRIPT_FILENAME']) == 'maintenance.php') {
header("Location: http://example.com/");
exit;
}
}
}
强制刷新 CSS 缓存
在开发阶段修改样式表后,浏览器往往会因强缓存而不显示最新效果。动态附加时间戳作为查询参数,可欺骗浏览器认为这是一个新资源,从而拉取最新版本。
<link href="/stylesheet.css?<?php echo time(); ?>" rel="stylesheet" type="text/css" />
生成英文序数词后缀
在前端列表展示排名(第1名、第2名...)时,需要将数字转换为带有 st, nd, rd, th 后缀的格式。该函数处理了如 11th, 12th, 13th 这种特殊情况(普通规律是1st, 2nd, 3rd)。
function make_ranked($rank) {
$last = substr( $rank, -1 );
$seclast = substr( $rank, -2, -1 );
if( $last > 3 || $last == 0 ) $ext = 'th';
else if( $last == 3 ) $ext = 'rd';
else if( $last == 2 ) $ext = 'nd';
else $ext = 'st';
// 处理 11th, 12th, 13th 的特殊规则
if( $last == 1 && $seclast == 1) $ext = 'th';
if( $last == 2 && $seclast == 1) $ext = 'th';
if( $last == 3 && $seclast == 1) $ext = 'th';
return $rank.$ext;
}
以上就是这10个PHP实用代码片段的详细内容,更多关于PHP后端开发与性能优化的资料请关注本站其它相关文章!本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













