PHP中当前文件为GBK或GB2312编码,怎么用正则表达式取汉字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP中当前文件为GBK或GB2312编码,怎么用正则表达式取汉字相关的知识,希望对你有一定的参考价值。

<?php
$str = "这%里是^测&试*中$心,欢.迎e你4的6到k来,我r们awe这y里wet一ef直在努力gr着找寻最佳gr的伙伴,希望您的$$%加盟可以@推动我们GH团队高速发展!";
$code = "/(^[".chr(0xa1)."-".chr(0xff)."][^\xB0-\xf7]*)4$/";
preg_match_all($code,$str,$arr);
print_r($arr);
?>
如上,怎么取出str字串中的三个汉字(这三个汉字中可能夹含有非汉字字符或空格,换行符等等),我后面的操作中要往正文第一个汉字开始数三个汉字后,插入一个字串,希望大家帮帮忙
我用下面那段代码页不行,输出的是:Array ( [0] => Array ( ) ) ,是空的。
<?php
$str = "这%里是^测&试*中$心,欢.迎e你4的6到k来,我r们awe这y里wet一ef直在努力gr着找寻最佳gr的伙伴,希望您的$$%加盟可以@推动我们GH团队高速发展!";
$code = "/^[".chr(0xa1)."-".chr(0xff)."]+$/";
preg_match_all($code,$str,$arr);
print_r($arr);
?>

参考技术A if (ereg('/[\u4E00-\u9FA5]/',$str))
$chn = str_replace('/[^\u4E00-\u9FA5]/','', $str);


判断是否有中文,$chn=过去非中文字符
参考技术B 试一下代码:
$str = "这%里是^测&试*中$心,欢.迎e你4的6到k来,我r们awe这y里wet一ef直在努力gr着找寻最佳gr的伙伴,希望您的$$%加盟可以@推动我们GH团队高速发展!";
$code = "/[".chr(0xa1)."-".chr(0xff)."]+/";
preg_match_all($code,$str, $arr); //GB2312汉字字母数字下划线正则表达式
print_r($arr);本回答被提问者采纳
参考技术C 做四川廖排骨吧,很不错的选择。

PHP - 如何处理文件名乱码

在中文windows环境下,PHP的文件系列函数(File System),譬如file_exists()mkdir()等,如果路径或文件名中包含中文,则不能够正确识别,导致函数执行不成功。

这是因为在中文windows使用的是GBK编码,而PHP默认是UTF-8编码。

因此对于这个问题,需要将文件名称转换为GBK编码,譬如:

mkdir(iconv("UTF-8", "GBK", "中文"));

如果这类函数用的多,可以自行封装一下,以方便调用。

以上是关于PHP中当前文件为GBK或GB2312编码,怎么用正则表达式取汉字的主要内容,如果未能解决你的问题,请参考以下文章

怎么才能把utf-8编码的asp文件转换成gn2312

如何把utf-8编码的转换为gb2312

汉字编码 (GB2312 GBK GB18030)

charset=gbk和charset=gb2312有啥区别

字符编码

utf8转gb2312乱码问题