`

PHP 过滤生僻字和特殊字符

阅读更多
<?php
header('Content-Type:text/html;charset=utf-8');
$content = "abc阅谁问君诵,水落清香浮。下面是生僻字和特殊字符:<>'\"'[生僻字iteye无法识别]";
echo htmlspecialchars(filterUtf8($content), ENT_QUOTES);
//过滤生僻字 所谓的生僻字是指超过三个字节的字符,或者非utf8字符
function filterUtf8($str) {
	/*utf8 编码表:
	 * Unicode符号范围           | UTF-8编码方式
	 * u0000 0000 - u0000 007F   | 0xxxxxxx
	 * u0000 0080 - u0000 07FF   | 110xxxxx 10xxxxxx
	 * u0000 0800 - u0000 FFFF   | 1110xxxx 10xxxxxx 10xxxxxx
	 *
	 */
	$re = '';
	$str = str_split(bin2hex($str), 2);
	$mo = 1<<7;
	$mo2 = $mo | (1<<6);
	$mo3 = $mo2 | (1<<5);
	//三个字节
	$mo4 = $mo3 | (1<<4);
	//四个字节
	$mo5 = $mo4 | (1<<3);
	//五个字节
	$mo6 = $mo5 | (1<<2);
	//六个字节
	for ($i = 0; $i < count($str); $i++) {
		if ((hexdec($str[$i]) & ($mo)) == 0) {
			$re .= chr(hexdec($str[$i]));
			continue;
		}
		//4字节 及其以上舍去
		if ((hexdec($str[$i]) & ($mo6)) == $mo6) {
			$i = $i + 5;
			continue;
		}
		if ((hexdec($str[$i]) & ($mo5)) == $mo5) {
			$i = $i + 4;
			continue;
		}
		if ((hexdec($str[$i]) & ($mo4)) == $mo4) {
			$i = $i + 3;
			continue;
		}
		if ((hexdec($str[$i]) & ($mo3)) == $mo3) {
			$i = $i + 2;
			if (((hexdec($str[$i]) & ($mo)) == $mo) && ((hexdec($str[$i - 1]) & ($mo)) == $mo)) {
				$r = chr(hexdec($str[$i - 2])) . chr(hexdec($str[$i - 1])) . chr(hexdec($str[$i]));
				$re .= $r;
			}
			continue;
		}
		if ((hexdec($str[$i]) & ($mo2)) == $mo2) {
			$i = $i + 1;
			if ((hexdec($str[$i]) & ($mo)) == $mo) {
				$re .= chr(hexdec($str[$i - 1])) . chr(hexdec($str[$i]));
			}
			continue;
		}
	}
	return $re;
}
?>

 

效果图:

 

 

 

 

  • 大小: 23.3 KB
1
0
分享到:
评论

相关推荐

    处理生僻字

    处理生僻字是信息技术中的一个特殊挑战,因为这些字符的编码复杂,且在不同的系统和平台中支持程度不同。本文将详细介绍如何利用.NET框架来处理生僻字,以及在VB应用中调用相关的动态链接库(DLL)。 首先,我们来...

    font_生僻字.zip

    标题“font_生僻字.zip”表明这是一份与生僻字相关的压缩文件,很可能包含的是特殊字体或者字库,用于显示那些不常见或者在日常生活中很少使用的汉字。生僻字,顾名思义,指的是那些在汉语中使用频率极低的字符,...

    chrome生僻字解决方案

    在使用Chrome浏览器时,有时会遇到显示生僻字的问题,这主要是由于系统默认的字体库不包含某些罕见或特殊的汉字,导致浏览器无法正确渲染。Chrome生僻字解决方案主要涉及以下几个方面: 1. **字体替换**:Chrome...

    delphi 汉字转拼音首字母含生僻字

    2. **拼音转换**:调用拼音库,将每个汉字转换为拼音,考虑到生僻字,可能需要特殊处理。 3. **处理多音字**:许多汉字有多个读音,根据上下文选择合适的拼音,或者提供所有可能的读音。 4. **提取首字母**:从拼音...

    生僻字安装包.zip

    中国最早的文字是商代的甲骨文,约为3500至4500字,因为其中有些符号,现在也不能确定是不是文字,或者那个时代的生僻字,给今天甲骨文字数的统计制造了大麻烦。本安装包包含大部分生僻字字体文件,一键安装方便快速...

    db2 生僻字排序解决方案

    在处理中文环境下的数据时,经常会遇到一些生僻字或者特殊字符在数据库中的排序问题。这些问题往往会导致查询结果不符合预期,尤其是在使用像DB2这样的大型关系型数据库管理系统(RDBMS)时更为明显。例如,在使用...

    生僻字与16进制的转换

    标题中的“生僻字与16进制的转换”是一个关于字符编码和数据表示的专题。在计算机系统中,字符的存储和传输通常涉及到各种编码方式,如ASCII、GBK、UTF-8等。生僻字是指那些在常用汉字中不太常见的字,它们往往不在...

    人口字库生僻字

    人口字库 生僻字输入和打印,显示都可以。方正宋一人口信息字库有三万个以上字符,非常全

    php支持生僻字的汉字转拼音类.zip

    此外,类库可能还提供了其他功能,比如支持多音字、声调标注,以及处理特殊字符的能力。这些特性使得该类库更加完善,能够适应各种复杂的转换需求。开发者还可以根据自己的项目需求对类库进行定制,增加更多的功能...

    汉字GBK首字母(含生僻字)C++实现代码文件

    在IT领域,尤其是在编程实践中,有时我们...总的来说,这个代码实现解决了C++环境中处理汉字GBK编码并获取首字母的难题,特别考虑了生僻字、多音字和全角字符的情况,对于处理中文信息的程序设计具有很高的参考价值。

    生僻字区位码对照表

    生僻字区位码对照表

    繁难字库生僻字不用造

    - **字量规模**: 该字库包含了大约16,000个字符,覆盖了大量的生僻字需求,满足了不同领域的使用场景。 - **版权情况**: 这个字库并未申请专利保护,而是以非商业目的在师友、同行之间免费流通。这意味着任何人可以...

    【PHP 】解决上传CSV表格读取内容乱码,针对生僻字解决方案

    在项目开发过程中发现,读取表格列,相同的两个字如“思思”,读取出来的是特殊符号,还有读取其他的某些字符或生僻字,都会显示特殊符号,通过这个代码已经完美解决。

    生僻字带增强图片数据集

    生僻字带增强图片数据集是一个专门针对生僻汉字的图像处理资源,它结合了计算机视觉和自然语言处理领域的知识,旨在帮助开发者和研究人员训练更准确的汉字识别模型,特别是对于那些不常见、使用频率较低的汉字。...

    公安生僻字安装包

    很多输入法中没有的汉字可以从这里输入。源自公安局人民录入系统。

    用生僻字实现双字词高亮显示

    通过生僻字作为标记,不仅可以避免常规高亮方式可能带来的排版问题,还能提供更好的用户体验,因为用户在阅读过程中不太可能注意到这些特殊的字符。 在提供的链接中,博主liangjian103在ITEYE博客分享了相关的实现...

    delphi7环境下 汉字拼音首字母 含3000+生僻字

    前辈的汉字转拼音首字母适合于delphi高版本,用笨办法成delphi7可用,效率不算差,这个最大的好处,遇到任何生僻字,都可以通过调整识别解决,已经解决了一大部分生僻字了。

Global site tag (gtag.js) - Google Analytics