网站优化技术

21个实用PHP代码片段:提升开发效率的编程技巧

发布于:
最后更新时间:
热度:299

1. PHP可阅读随机字符串生成

该函数通过辅音与元音的交替组合,生成接近自然语言的随机字符串,相较于纯随机字符更易于用户记忆与识别,常用于密码验证、临时标识码等场景。函数支持自定义长度(需为偶数),内部预定义辅音数组(b,c,d,f等)与元音数组(a,e,i,o,u),通过循环交替拼接字符,确保输出结果兼具随机性与可读性。

```php

/

生成可阅读的随机字符串

@param int $length 字符串长度(需为偶数)

@return string 可阅读的随机字符串

/

function readable_random_string($length = 6) {

$conso = array("b","c","d","f","g","h","j","k","l","m","n","p","r","s","t","v","w","x","y","z");

$vocal = array("a","e","i","o","u");

$password = "";

srand ((double)microtime()1000000);

$max = $length/2;

for($i=1; $i<=$max; $i++) {

$password .= $conso[rand(0,19)];

$password .= $vocal[rand(0,4)];

}

return $password;

}

```

2. PHP通用随机字符串生成

当需要高强度随机字符(如用户密码、令牌)时,该函数通过字母与数字的组合生成指定长度的随机字符串。字符集包含大小写字母及数字,通过循环随机选取字符,确保输出的随机性适用于安全场景。

```php

/

生成通用随机字符串

@param int $l 字符串长度

@return string 随机字符串

/

function generate_rand($l) {

$c = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

srand((double)microtime()1000000);

for($i=0; $i<$l; $i++) {

$rand .= $c[rand()%strlen($c)];

}

return $rand;

}

```

3. PHP电子邮件地址编码

为防止电子邮件被爬虫抓取,该函数将邮箱地址转换为HTML字符实体,并结合JavaScript动态渲染,有效避免垃圾邮件收集。支持自定义链接文本与HTML属性,适用于网站联系表单等场景。

```php

/

编码电子邮件地址为HTML字符实体

@param string $email 邮箱地址

@param string $linkText 链接显示文本

@param string $attrs HTML属性

@return string 编码后的HTML代码

/

function encode_email($email='info@domain.com', $linkText='Contact Us', $attrs='class="emailencoder"') {

$email = str_replace('@', '@', $email);

$email = str_replace('.', '.', $email);

$email = str_split($email, 5);

$linkText = str_replace('@', '@', $linkText);

$linkText = str_replace('.', '.', $linkText);

$linkText = str_split($linkText, 5);

$part1 = '';

$part4 = '';

$encoded = '';

$encoded .= "document.write('$part1');";

$encoded .= "document.write('$part2');";

foreach($email as $e) {

$encoded .= "document.write('$e');";

}

$encoded .= "document.write('$part3');";

foreach($linkText as $l) {

$encoded .= "document.write('$l');";

}

$encoded .= "document.write('$part4');";

$encoded .= '';

return $encoded;

}

```

4. PHP邮件地址有效性验证

该函数不仅验证邮箱格式是否符合正则规则,还可选检查域名的MX记录,确保邮箱地址的真实存在性。通过正则表达式匹配邮箱结构,结合`getmxrr()`函数查询DNS记录,适用于表单提交前的数据校验。

```php

/

验证邮箱地址有效性

@param string $email 邮箱地址

@param bool $test_mx 是否检查MX记录

@return bool 是否有效

/

function is_valid_email($email, $test_mx = false) {

if(eregi("^([_a-z0-9-]+)(\.[_a-z0-9-]+)@([a-z0-9-]+)(\.[a-z0-9-]+)(\.[a-z]{2,4})$", $email)) {

if($test_mx) {

list($username, $domain) = split("@", $email);

return getmxrr($domain, $mxrecords);

} else {

return true;

}

} else {

return false;

}

}

```

5. PHP列出目录内容

该函数遍历指定目录,过滤掉系统文件(如`.`、`..`、`Thumbs.db`),并以超链接形式输出文件列表,支持在新窗口中打开文件。适用于文件管理、资源展示等场景,需确保目录存在且可读。

```php

/

列出目录内容

@param string $dir 目录路径

@return void 输出文件列表

/

function list_files($dir) {

if(is_dir($dir)) {

if($handle = opendir($dir)) {

while(($file = readdir($handle)) !== false) {

if($file != "." && $file != ".." && $file != "Thumbs.db") {

echo ''.$file.''."\n";

}

}

closedir($handle);

}

}

}

```

6. PHP递归销毁目录

该函数通过递归遍历目录,逐个删除文件及子目录,最终删除目标目录本身。支持虚拟路径转换,适用于临时文件清理、目录卸载等场景,需谨慎使用以避免误删重要数据。

```php

/

递归销毁目录

@param string $dir 目录路径

@param bool $virtual 是否为虚拟路径

@return bool 是否成功

/

function destroyDir($dir, $virtual = false) {

$ds = DIRECTORY_SEPARATOR;

$dir = $virtual ? realpath($dir) : $dir;

$dir = substr($dir, -1) == $ds ? substr($dir, 0, -1) : $dir;

if (is_dir($dir) && $handle = opendir($dir)) {

while ($file = readdir($handle)) {

if ($file == '.' || $file == '..') {

continue;

} elseif (is_dir($dir.$ds.$file)) {

destroyDir($dir.$ds.$file);

} else {

unlink($dir.$ds.$file);

}

}

closedir($handle);

rmdir($dir);

return true;

} else {

return false;

}

}

```

7. PHP解析JSON数据

JSON作为Web服务常用数据格式,该函数通过`json_decode()`将JSON字符串转换为PHP对象,支持嵌套数据访问。适用于API数据解析、配置文件读取等场景,需注意处理JSON解析失败的情况。

```php

// 示例JSON字符串

$json_string = '{"id":1,"name":"foo","email":"foo@foobar.com","interest":["wordpress","php"]}';

$obj = json_decode($json_string);

echo $obj->name; // 输出: foo

echo $obj->interest[1]; // 输出: php

```

8. PHP解析XML数据

通过`simplexml_load_string()`函数将XML字符串转换为SimpleXML对象,支持属性访问与子节点遍历。适用于配置文件解析、API响应处理等场景,需确保XML格式正确。

```php

// 示例XML字符串

$xml_string = 'Foofoo@bar.comFoobarfoobar@foo.com';

$xml = simplexml_load_string($xml_string);

foreach ($xml->user as $user) {

echo $user['id'], ' '; // 输出属性

echo $user->name, ' '; // 输出子节点

echo $user->email, '';

}

```

9. PHP创建日志缩略名

该函数通过正则表达式将字符串中的非字母数字字符替换为短横线,生成URL友好的缩略名(如文章标题转URL)。适用于博客系统、CMS中的文章链接生成,需注意重复处理逻辑。

```php

/

创建URL友好的缩略名

@param string $string 原始字符串

@return string 缩略名

/

function create_slug($string) {

$slug = preg_replace('/[^A-Za-z0-9-]+/', '-', $string);

return $slug;

}

```

10. PHP获取客户端真实IP地址

该函数通过依次检查`HTTP_CLIENT_IP`、`HTTP_X_FORWARDED_FOR`和`REMOTE_ADDR`,获取用户的真实IP地址,即使通过代理服务器也能准确识别。适用于用户定位、访问统计等场景。

```php

/

获取客户端真实IP地址

@return string IP地址

/

function getRealIpAddr() {

if (!empty($_SERVER['HTTP_CLIENT_IP'])) {

$ip = $_SERVER['HTTP_CLIENT_IP'];

} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {

$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

} else {

$ip = $_SERVER['REMOTE_ADDR'];

}

return $ip;

}

```

11. PHP强制文件下载

该函数通过设置HTTP头信息,使浏览器直接下载文件而非打开,适用于文件下载功能实现。需确保文件存在且可读,支持自定义文件名与文件类型。

```php

/

强制文件下载

@param string $file 文件路径

@return void 输出文件内容

/

function force_download($file) {

if ((isset($file)) && (file_exists($file))) {

header("Content-length: ".filesize($file));

header('Content-Type: application/octet-stream');

header('Content-Disposition: attachment; filename="' . $file . '"');

readfile("$file");

} else {

echo "No file selected";

}

}

```

12. PHP创建标签云

该函数根据标签的出现频率动态调整字体大小,生成视觉层次分明的标签云。支持自定义最小/最大字体大小,适用于博客标签、关键词展示等场景,需传入标签与计数的关联数组。

```php

/

生成标签云

@param array $data 标签及计数数组

@param int $minFontSize 最小字体大小

@param int $maxFontSize 最大字体大小

@return string 标签云HTML

/

function getCloud($data = array(), $minFontSize = 12, $maxFontSize = 30) {

$minimumCount = min(array_values($data));

$maximumCount = max(array_values($data));

$spread = $maximumCount - $minimumCount;

$cloudHTML = '';

$cloudTags = array();

$spread == 0 && $spread = 1;

foreach($data as $tag => $count) {

$size = $minFontSize + ($count - $minimumCount) ($maxFontSize - $minFontSize) / $spread;

$cloudTags[] = '' . htmlspecialchars(stripslashes($tag)) . '';

}

return join("\n", $cloudTags) . "\n";

}

```

13. PHP计算字符串相似度

PHP内置的`similar_text()`函数可计算两个字符串的相似度百分比,适用于文本匹配、重复内容检测等场景。需传入两个字符串及用于存储相似度百分比的变量。

```php

$string1 = "Hello World";

$string2 = "Hello PHP";

similar_text($string1, $string2, $percent);

echo $percent; // 输出相似度百分比

```

14. PHP集成Gravatar通用头像

Gravatar作为全球通用头像系统,该函数通过邮箱地址生成头像链接,支持自定义大小、默认图片与评级。适用于用户系统、评论头像等场景,需调用Gravatar API。

```php

/

显示Gravatar头像

@param string $email 邮箱地址

@param int $size 头像大小

@param string $default 默认头像URL

@param string $rating 评级(G, PG, R, X)

@return void 输出头像HTML

/

function show_gravatar($email, $size, $default, $rating) {

echo '';

}

```

15. PHP按单词截断字符串

该函数在指定位置查找最近的单词断点,避免单词被截断,适用于文章摘要、标题截取等场景。支持自定义断点字符(如空格)与后缀填充。

```php

/

按单词截断字符串

@param string $string 原始字符串

@param int $limit 最大长度

@param string $break 断点字符

@param string $pad 后缀

@return string 截断后的字符串

/

function myTruncate($string, $limit, $break=".", $pad="...") {

if(strlen($string) <= $limit) return $string;

if(false !== ($breakpoint = strpos($string, $break, $limit))) {

if($breakpoint < strlen($string) - 1) {

$string = substr($string, 0, $breakpoint) . $pad;

}

}

return $string;

}

```

16. PHP文件ZIP压缩

该函数使用`ZipArchive`类将多个文件压缩为ZIP包,支持自定义压缩路径与覆盖选项。适用于文件打包、备份导出等场景,需确保目标目录可写。

```php

/

创建ZIP压缩文件

@param array $files 待压缩文件列表

@param string $destination ZIP文件路径

@param bool $overwrite 是否覆盖已有文件

@return bool 是否成功

/

function create_zip($files = array(), $destination = '', $overwrite = false) {

if(file_exists($destination) && !$overwrite) return false;

$valid_files = array();

if(is_array($files)) {

foreach($files as $file) {

if(file_exists($file)) $valid_files[] = $file;

}

}

if(count($valid_files)) {

$zip = new ZipArchive();

if($zip->open($destination, $overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {

return false;

}

foreach($valid_files as $file) {

$zip->addFile($file, $file);

}

$zip->close();

return file_exists($destination);

} else {

return false;

}

}

```

17. PHP解压ZIP文件

该函数通过`ZipArchive`类打开ZIP文件并解压至指定目录,适用于文件解压、资源释放等场景。需确保目标目录存在且可写,处理过程中需检查文件打开状态。

```php

/

解压ZIP文件

@param string $file ZIP文件路径

@param string $destination 解压目标目录

@return void 输出解压结果

/

function unzip_file($file, $destination) {

$zip = new ZipArchive();

if ($zip->open($file) !== TRUE) {

die('Could not open archive');

}

$zip->extractTo($destination);

$zip->close();

echo 'Archive extracted to directory';

}

```

18. PHP为URL添加http前缀

用户输入URL时常缺少`http://`前缀,该函数通过正则检查并自动补全,确保链接可正常访问。适用于表单提交中的URL处理,避免无效链接。

```php

if (!preg_match("/^(http|ftp):/", $_POST['url'])) {

$_POST['url'] = 'http://'.$_POST['url'];

}

```

19. PHP转换URL为可点击链接

该函数将文本中的URL、邮箱地址转换为可点击的超链接,支持http、https、ftp及mailto协议,适用于评论系统、内容展示中的链接自动识别。

```php

/

将URL和邮箱转换为可点击链接

@param string $text 原始文本

@return string 处理后的文本

/

function makeClickableLinks($text) {

$text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)', '\1', $text);

$text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)', '\1\2', $text);

$text = eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})', '\1', $text);

return $text;

}

```

20. PHP调整图像尺寸

该函数通过GD库生成图像缩略图,支持jpg、png、gif格式,自动按比例缩放以保持图像清晰度。适用于图片压缩、头像生成等场景,需确保GD库已启用。

```php

/

调整图像尺寸

@param string $filename 原图路径

@param string $tmpname 临时文件路径

@param int $xmax 最大宽度

@param int $ymax 最大高度

@return resource 缩略图资源

/

function resize_image($filename, $tmpname, $xmax, $ymax) {

$ext = explode(".", $filename);

$ext = $ext[count($ext)-1];

if($ext == "jpg" || $ext == "jpeg") $im = imagecreatefromjpeg($tmpname);

elseif($ext == "png") $im = imagecreatefrompng($tmpname);

elseif($ext == "gif") $im = imagecreatefromgif($tmpname);

$x = imagesx($im);

$y = imagesy($im);

if($x <= $xmax && $y <= $ymax) return $im;

if($x >= $y) {

$newx = $xmax;

$newy = $newx $y / $x;

} else {

$newy = $ymax;

$newx = $x / $y $newy;

}

$im2 = imagecreatetruecolor($newx, $newy);

imagecopyresized($im2, $im, 0, 0, 0, 0, floor($newx), floor($newy), $x, $y);

return $im2;

}

```

21. PHP检测AJAX请求

现代JavaScript框架发送AJAX请求时,会附带`HTTP_X_REQUESTED_WITH`头部信息,该函数通过检查该头部识别AJAX请求,适用于区分普通请求与AJAX请求,实现不同的响应逻辑。

```php

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {

// AJAX请求处理逻辑

} else {

// 普通请求处理逻辑

}

```

最新资讯

为您推荐

联系上海网站优化公司

上海网站优化公司QQ
上海网站优化公司微信
添加微信