九段PHP实战代码分享:邮件阅读追踪与网页关键词提取
需积分: 0 26 浏览量
更新于2024-08-31
收藏 64KB PDF 举报
"9段PHP实用功能的代码推荐"
在PHP编程中,经常会遇到各种各样的需求,而有时候一些简洁的代码片段能大大提高开发效率。以下就是9个实用的PHP功能代码,它们涵盖了邮件阅读追踪、网页关键字提取等多个场景,对于日常开发工作极具价值。
一、查看邮件是否已被阅读
这段代码利用HTTP头信息来追踪邮件的阅读情况。通过获取用户IP地址和当前时间,将数据记录到日志文件,并生成一个1x1像素的图片作为邮件的一部分。当邮件被加载时,图片会被请求,从而记录下邮件的阅读行为。
代码实现如下:
```php
<?php
error_reporting(0);
Header("Content-Type:image/jpeg"); // 设置返回类型为JPEG图片
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'];
}
$actual_time = time();
$actual_day = date('Y.m.d', $actual_time);
$actual_day_chart = date('d/m/y', $actual_time);
$actual_hour = date('H:i:s', $actual_time);
$browser = $_SERVER['HTTP_USER_AGENT'];
$myFile = "log.txt";
$fh = fopen($myFile, 'a+');
$stringData = $actual_day . '' . $actual_hour . '' . $ip . '' . $browser . "\r\n";
fwrite($fh, $stringData);
fclose($fh);
$newimage = ImageCreate(1, 1);
$grigio = ImageColorAllocate($newimage, 255, 255, 255);
ImageJPEG($newimage);
ImageDestroy($newimage);
?>
```
二、从网页中提取关键字
这段代码可以帮助开发者从HTML文档中提取关键词,这对于SEO分析或内容分析很有用。它通过解析HTML源码并查找`<meta>`标签中的`name="keywords"`属性来获取关键字。
代码实现如下:
```php
$meta_keywords = '';
$html = file_get_contents('http://example.com'); // 替换为实际网页URL
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($html);
$metas = $dom->getElementsByTagName('meta');
foreach ($metas as $meta) {
if ($meta->getAttribute('name') == 'keywords') {
$meta_keywords = $meta->getAttribute('content');
break;
}
}
echo $meta_keywords;
```
三、日期时间格式转换
这个函数可以将日期时间字符串转换成指定格式,适用于处理不同格式的日期数据。
代码实现如下:
```php
function convertDateFormat($date, $inputFormat, $outputFormat) {
$datetime = DateTime::createFromFormat($inputFormat, $date);
return $datetime ? $datetime->format($outputFormat) : '';
}
$date_str = '2023-04-07 15:30:00';
$input_format = 'Y-m-d H:i:s';
$output_format = 'd/m/Y h:i A';
echo convertDateFormat($date_str, $input_format, $output_format);
```
四、数组去重
在处理数据时,可能需要去除数组中的重复元素,这里提供一个基于序列化方法的数组去重函数。
代码实现如下:
```php
function array_unique_by_value($array) {
$serialized_array = array_map('serialize', $array);
$unique_values = array_unique($serialized_array);
return array_values(array_map('unserialize', $unique_values));
}
$array = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4];
print_r(array_unique_by_value($array));
```
五、检查字符串是否包含子串
这个函数用于判断一个字符串是否包含另一个子串,支持大小写敏感和不敏感两种模式。
代码实现如下:
```php
function string_contains($haystack, $needle, $case_sensitive = true) {
if (!$case_sensitive) {
$haystack = strtolower($haystack);
$needle = strtolower($needle);
}
return strpos($haystack, $needle) !== false;
}
$text = 'Hello, World!';
echo (string_contains($text, 'world')) ? '包含' : '不包含';
```
六、数组元素随机排序
有时我们需要对数组进行随机排序,以下函数可实现此功能。
代码实现如下:
```php
function randomize_array($array) {
shuffle($array);
return $array;
}
$array = [1, 2, 3, 4, 5];
print_r(randomize_array($array));
```
七、计算字符串相似度
使用Levenshtein距离算法,可以计算两个字符串的相似度。
代码实现如下:
```php
function levenshtein_similarity($str1, $str2) {
$len1 = strlen($str1);
$len2 = strlen($str2);
$max_len = max($len1, $len2);
$lev = levenshtein($str1, $str2);
return 1 - ($lev / $max_len);
}
$str1 = 'apple';
$str2 = 'appel';
echo levenshtein_similarity($str1, $str2) * 100 . '%'; // 输出相似度百分比
```
八、限制字符串长度并添加省略号
当需要截取字符串并保持完整性时,此函数会在达到指定长度后添加省略号。
代码实现如下:
```php
function limit_text($text, $limit, $append = '...') {
if (strlen($text) <= $limit) {
return $text;
}
return substr($text, 0, $limit - strlen($append)) . $append;
}
$text = '这是一个很长很长的句子,我们希望在不破坏语意的情况下缩短它。';
echo limit_text($text, 20);
```
九、检查URL是否有效
此函数可以验证一个URL是否有效且可以访问。
代码实现如下:
```php
function is_url_reachable($url) {
$headers = @get_headers($url);
return stripos($headers[0], '200') === false ? false : true;
}
$url = 'https://www.example.com';
if (is_url_reachable($url)) {
echo 'URL可达';
} else {
echo 'URL不可达';
}
```
以上这些代码片段都是在实际开发中非常实用的功能,它们可以帮助开发者快速解决一些常见的问题,提高开发效率。在实际应用时,根据项目需求,可以适当调整和扩展这些代码。
2011-10-25 上传
2010-03-20 上传
2020-10-23 上传
2015-10-31 上传
2020-10-23 上传
2020-10-24 上传
2020-10-22 上传
2009-04-02 上传
2010-08-09 上传
weixin_38612648
- 粉丝: 12
- 资源: 920
最新资源
- 新代数控API接口实现CNC数据采集技术解析
- Java版Window任务管理器的设计与实现
- 响应式网页模板及前端源码合集:HTML、CSS、JS与H5
- 可爱贪吃蛇动画特效的Canvas实现教程
- 微信小程序婚礼邀请函教程
- SOCR UCLA WebGis修改:整合世界银行数据
- BUPT计网课程设计:实现具有中继转发功能的DNS服务器
- C# Winform记事本工具开发教程与功能介绍
- 移动端自适应H5网页模板与前端源码包
- Logadm日志管理工具:创建与删除日志条目的详细指南
- 双日记微信小程序开源项目-百度地图集成
- ThreeJS天空盒素材集锦 35+ 优质效果
- 百度地图Java源码深度解析:GoogleDapper中文翻译与应用
- Linux系统调查工具:BashScripts脚本集合
- Kubernetes v1.20 完整二进制安装指南与脚本
- 百度地图开发java源码-KSYMediaPlayerKit_Android库更新与使用说明