php摘要
㈠ php中使用substr截取字符串出现中文乱码问题该怎么办
在PHP程序开发中,经常会执行字符串的截取操作,比如输出信息列表时,标题不宜过长,打印文章摘要时,也要执行一系列的字符串截取操作。遇到这些需求时,我们经常会想到使用substr()方法来实现,substr()对全英文字符串的截取是比较适合的。
但字符串只要出现中文字符,就有可能导致PHP
substr中文乱码,因为中文UTF-8编码,每个汉字占3字节,而GB2312占2字节,英文占1字节,截取位数不准确,substr()硬生生地将
一个中文字符“锯”成两半,造成断开的字符会把其后的..拉过来一起做一个字,所以出现了PHP substr中文乱码。
substr --- 取得部份字符串
语法 : string substr (string string, int start [, int length])
说明 :
substr( )传回 string的一部份字符串,由参数 start和 length指定。
如果 start是正数,传回的字符串将会从 string的第 start个字符开始。
Example :
<?php
$rest = substr ("abcdef", 1); // returns "bcdef"
$rest = substr ("abcdef", 1, 3); // returns "bcd"
?>
如果 start是负数,传回的字符串将会从 string结尾的第 start个字开始。
Example :
<?php
$rest = substr ("abcdef", -1); // returns "f"
$rest = substr ("abcdef", -2); // returns "ef"
$rest = substr ("abcdef", -3, 1); // returns "d"
?>
如果有给予参数 length而且是正数时,传回的字符串将会从 start传回 length个字符。
如果有给予参数 length而且是负数时,传回的字符串将会结束于 string结尾的第 length个字符。
Example :
<?php
$rest = substr ("abcdef", 1, -1); // returns "bcde"
?>
对于英文没有问题,我们测试一个中文
<?php
$rest = substr ("中国人", 1, -1); // returns "fdsafsda" 就是乱码了
?>
这种截取字符的结果,肯定不是我们想要的结果,这种出现PHP substr中文乱码的情况,可能会导致程序无法正常运行。解决办法主要有两种:
一、使用mbstring扩展库的mb_substr()截取就不会出现乱码了。
可以用mb_substr()/mb_strcut()这个函数,mb_substr()/mb_strcut()的用法与substr()相似,
只是在mb_substr()/mb_strcut最后要加入多一个参数,以设定字符串的编码,但是一般的服务器都没打开
php_mbstring.dll,需要在php.ini在把php_mbstring.dll打开。
<?php
echo mb_substr("php中文字符encode",0,4,"utf-8");
?>
如果未指定最后一个编码参数,会是三个字节为一个中文,这就是utf-8编码的特点,若加上utf-8字符集说明,所以,是以一个字为单位来截取的。
使用的时候要注意php文件的编码,和网页显示时的编码。使用这个mb_substr方法要事先知道字符串的编码,如果不知道编码,就需要判断,mbstring库还提供了mb_check_encoding来检验字符串编码,但还不完善。
PHP 自带几种字符串截取函数,其中常用到的就是 substr 和 mb_substr。前者在处理中文时,GBK 为 2 个长度单位,UTF 为 3 个长度单位,后者指定编码后,一个中文即为 1 个长度单位。
substr 有时会截 1/3 个中文或半个中文,会显示乱码,相对来说 mb_substr 更适合我们使用。不过有时候 mb_substr
就显得不那么好用了。例如我要显示一个小图片的简要信息,5 个中文正好,超过 5 个就截取前4再加上
”…”,这样处理中文是没问题了,可是处理英文或数字,这样截取就太短了。
二、自己书写截取函数,但效率不如用mbstring扩展库来得高。下面是ecshop里面的截取UTF-8编码下字符串的函数。
function sub_str($str, $length = , $append = true)
{
$str = trim($str);
$strlength = strlen($str);
if ($length == || $length >= $strlength)
{
return $str; //截取长度等于或大于等于本字符串的长度,返回字符串本身
}
elseif ($length < ) //如果截取长度为负数
{
$length = $strlength + $length;//那么截取长度就等于字符串长度减去截取长度
if ($length < )
{
$length = $strlength;//如果截取长度的绝对值大于字符串本身长度,则截取长度取字符串本身的长度
}
}
if (function_exists('mb_substr'))
{
$newstr = mb_substr($str, , $length, EC_CHARSET);
}
elseif (function_exists('iconv_substr'))
{
$newstr = iconv_substr($str, , $length, EC_CHARSET);
}
else
{
//$newstr = trim_right(substr($str, , $length));
$newstr = substr($str, , $length);
}
if ($append && $str != $newstr)
{
$newstr .= '...';
}
return $newstr;
}
㈡ 计算机毕业设计的源代码
之前看到很多同学都在找论文的源代码,我收藏了个网站,键盘论文网,上面有很多计算机专业的毕业设计,包含了对应的源代码,你参考下吧
之前的一篇文章,关于php中文分词技术的
摘要:
论文以站内中文全文搜索技术为背景,结合PHP(PHP:Hypertext Preprocessor)在实践领域中对Web应用的性能和内存消耗的要求,提出了一种纯PHP的以预索引字典为基础的轻量高效的站内中文搜索引擎的解决力案。
主要内容:通过索引器在数据库中保存生成的站内全文数据的带权重索引和词频权重索引,检索器基于此全文数据可以按多个类别的权重定义计算相关度得到搜索结果,表示器将结果高亮排序返回给搜索用户完成搜索功能。
一个基于海量字典的中文分词器作为中文数据处理的核心,将中英文及数字信息正确的切分并使得索引器可以进行按词汇权重索引,实现丰富灵活的搜索或索引相关功能。
文章针对PHP站内中文搜索技术中最突出的三个方面进行研究。
1)轻量高效的PHP中文搜索框架设计,并统一考虑了检索器和索引器的中文分词问题,使得索引和搜索时处理同样的分词结果。这样,在以较小的代价保证分词器90%以上准确度的同时,对不准确的分词结果具有很好的容忍度,保证了PHP应用的轻量性和可用性。对实践中对性能非常敏感的Web应用的设计开发有一定的借鉴意义。
2)对站内数据的搜索结果提出了一种多权重因素的相关度计算的方法,该方法在传统的关键字权重相关度的基础上,结合HTML标记进行权重识别和统计,并通过文档属性和统计数据等类别增加了用户可干涉的相关度权重因素,有力地保障了搜索结果的有效性,提升了用户的站内搜索体验。
3)为了提升中文分词的质量,并同时解决PHP应用在处理海量词典时的性能和内存消耗的问题,本文通过优化的分词匹配算法和创新性地在PHP中文分词中使用B-Tree预索引词典,以数量达53万多个的UTF-8简繁体中文词汇在保证了较好的分词结果的同时保持了中文搜索的轻量性和高效性。并在实践中证明具有良好的可用性和通用性,具有较低的算法时间复杂度。
创新点:
本文结合PHP技术以及搜索引擎、中文分词等理论背景,对PHP领域内实现轻量高效的站内中文搜索提出了行之有效的分析解决方法。
随着Web应用的持续发展和PHP普遍应用、中文信息处理需求的持续增长,本文所论述的方法对PHP相关范围内的中文搜索或索引相关功能都有一定的指导意义。
同时,随着先进的搜索引擎技术模型的演进,本文所做的分析研究为中文站内搜索的普适性应用进行了一项有意义的探索。
你参考下吧
㈢ 如何实现一键开启屏幕常亮(让你的屏幕时刻保持高亮状态)
在使用电脑或手机的过程中,屏幕常亮是一项非常方便的功能。然而,很多人并不知道如何一键开启屏幕常亮。本文将为你详细介绍如何实现这个便捷功能。
如何实现一键开启屏幕常亮?
摘要:在 PHP 开发中,系统设置的配置至关重要,它决定了服务器的行为以及应用程序的运行环境。然而,对于初学者或经验较少的开发者来说,配置系统设置可能是一项艰巨的任务。为了简化系统设置的过程,php小编鱼仔精心整理了本指南,详细介绍了各种系统设置的配置方法。本指南将涵盖以下内容:
系统设置:了解设备系统设置,找到屏幕常亮选项,并进行相应设置,以确保屏幕在特定时间内保持高亮状态。
二、软件辅助方法
屏幕常亮软件:搜索并下载一款专门用于保持屏幕常亮的软件,这些软件通常提供一键开启功能,方便快捷。自定义快捷方式:通过自定义设备的快捷方式,将屏幕常亮选项添加至快捷方式列表中,从而实现一键开启屏幕常亮的功能。
三、硬件控制方法
物理按钮:某些设备配备了专门的物理按钮,可以直接开启或关闭屏幕常亮功能,学会使用这些按钮可以让你更加便捷地控制屏幕的亮度。
四、定时开关方法
定时开关:将屏幕常亮功能与定时开关功能结合使用,可以在特定时间段内自动开启或关闭屏幕常亮,减少手动操作的麻烦。
五、应用控制方法
应用程序:一些应用程序提供了特殊的屏幕常亮功能,例如看小说时,可以通过特定应用设置屏幕保持高亮状态。外部设备:通过连接外部设备,如鼠标或键盘,可以设置触发屏幕常亮的动作,使屏幕保持高亮。
六、优化设置方法
设备设置:通过调整设备的省电模式,降低自动休眠时间,可以延长屏幕常亮的时间。更新:定期检查设备的软件更新,以确保屏幕常亮功能的稳定和最新版本的使用体验。节省电量:使用省电功能,如降低屏幕亮度、关闭背光等方式,让屏幕常亮不会过度消耗电量。硬件要求:一些设备可能需要特定的硬件支持才能实现一键开启屏幕常亮功能,确保你的设备符合要求。多设备同步:如果你使用多个设备,可以将屏幕常亮设置同步到所有设备上,方便快捷地管理屏幕亮度。警示提醒:通过设置警示提醒,及时知道屏幕常亮的开关状态,避免不必要的能源浪费。节能技巧:了解屏幕常亮的使用规则和注意事项,学习节能技巧,合理使用屏幕常亮功能。屏幕保护:在开启屏幕常亮的同时,合理设置屏幕保护功能,避免长时间使用屏幕常亮造成屏幕损害。