九段PHP实战代码分享:邮件阅读追踪与网页关键词提取

需积分: 0 0 下载量 153 浏览量 更新于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不可达'; } ``` 以上这些代码片段都是在实际开发中非常实用的功能,它们可以帮助开发者快速解决一些常见的问题,提高开发效率。在实际应用时,根据项目需求,可以适当调整和扩展这些代码。