导航:首页 > 编程语言 > php字符串查找中文

php字符串查找中文

发布时间:2025-07-01 21:11:08

‘壹’ php中 提取中文字符首个拼音字母

$fchar = ord($s0{0}); //获取字符串的第一个字节

//判断是不是英文字符,如果是则直接返回该字母大写
if ($fchar >= ord(“A”) and $fchar <= ord(“z”))return strtoupper($s0{0});

//以下代码用字符编码转换函数,通过两种字符集编码转换的对比,判断字符串是哪种字符集
//最终取字符串为GB字符集
$s1 = @iconv(“UTF-8″, “GBK”, $s0);
$s2 = @iconv(“GBK”, “UTF-8″, $s1);
if ($s2 == $s0) {
$s = $s1;
} else {
$s = $s0;
}

//计算给出的字符串的前两个字节内码,然后再根据结果判断在GB字符集中的位置,从而根据位置与拼音的关系,最终得出拼音字母
$asc = ord($s{0}) * 256 + ord($s{1}) – 65536;

‘U’、‘V’对中文无效,以下是对H 拼音的计算:

if($asc>=-17922 and $asc<=-17418)return "H";

‘贰’ php如何输出中文json格式字符串

php如何输出中文json格式字符串
如何对json格式的字符串进行转换,php提供了两个函数:
json_encode 对变量进行 JSON 编码
json_decode 对 JSON 格式的字符串进行编码

下面看个实例:
$arr = ['a', 'b', 'c'];echo json_encode($arr);

输出为:
["a","b","c"]

但是,当我们在数组中放入中文的时候,就会出现问题:
$arr = [ '世界', '你好',
];echo json_encode($arr);

输出的结果为:
["\u4e16\u754c","\u4f60\u597d"]

这个结果显然不是我们想要的,但是为什么出现这个呢?
因为当我们的值中包含中文时,php对他进行json编码时底层会对中文进行unicode编码,导致结果不可读,那该怎么解决呢?
方法一
可以利用 urlencode 和 urldecode 方法绕过这个转码为 unicode 的过程,先将中文字段进行urlencode,然后json_encode,最后再用urldecode处理结果,便可以正常显示中文。具体代码如下:
$arr = [ '世界', '你好',
];echo urldecode(json_encode(array_map('urlencode', $arr)));

输出结果为:
["世界","你好"]

方法二
自PHP5.4版本,官方就已经给Json新增了一个选项: JSON_UNESCAPED_UNICODE。加上这个选项后,就不会自动把中文编码了。具体代码如下:
$arr = [ '世界', '你好',
];echo json_encode($arr, JSON_UNESCAPED_UNICODE);
["世界","你好"]

看吧,这才是我们想要的结果 :)

‘叁’ php关于截取中文字符串的问题

php中文乱码的原因及解决方法
原因:1.php页面语言本身的编码类型不合适,这时候,你直接在脚本中写的中文肯定是乱码,不用说数据库了;
解决方法:选择'utf8'或者'薯郑gb2312',这样客户浏览器会自动选择并出现正确的中文显示。注意:'utf8'或者'gb2312'都可以正确显示中文的。
2.数据库mysql中的编码类型不正确。
解决方法:创建数据库的时候,mysql
字符集选择'utf8',mysql
连接校对选择utf8_general_ci,这样创建的数据库用来存储中文肯定没有问题,
否则,你的中文首先在mysql中就是乱码,更不要期望它会给你在php页面中显示正确。
3.与平时的脚本编辑握辩环境有关。比如,有些内容是自己用word写的,有些是用记事本写的,有些用editplus、ultraplus等文本编辑器。有时候就直接在dw中写中文了,
这样做不出乱码才怪呢。
解决方法:尽量用同一种编辑器。如果是拷贝来得既有的内容,建议用ultraplus中的编码转换功能把它转换成utf8或者gb2312。
到底转换成什么类型并不重要,关键要求你的php
web应用程序中的编码要一致就行。
4.编程访问
mysql时,建议添加段手缺一行代码:mysql_query("set
names
'gbk'");
这是解决方法
我没看懂你贴上来的程序
所以给你一些方法去解决乱码的问题
希望可以帮得上

‘肆’ UTF-8正则表达式如何匹配汉字,utf-8正则表达式_PHP教程

判断输入内容是否含有违法字符,请看下面代码

$str = "编程";

if(!preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str))

{

echo "您输入的[".$str."]含有违法字符";

}

else

{

echo "您输入的[".$str."]完全合法,通过!";

}

-----------------------

UTF-8匹配:在javascript中,要判断字符串是中文是很简单的。

比如:

代码如下:

var str = "php编程";

if (/^[\u4e00-\u9fa5]+$/.test(str))

{

alert("该字符串全部是中文");

}

else

{

alert("该字符串不全部是中文");

}

php中,是用\x表示十六进制数据的。

于是,变换成如下的代码:

代码如下:

$str = "php编程";

if (preg_match("/^[\x4e00-\x9fa5]+$/",$str))

{

print("该字符串全部是中文");

}

else

{

print("该字符串不全部是中文");

}

貌似不报错了,判断的结果也正确,不过把$str换成“编程”两字,结果却还是显示“该字符串不全部是中文”,看来这样的判断还是不够准确。

重要:

查阅了《精通正则表达式》发现,对于[\x4e00-\x9fa5]这块东西,自己做一个强化的解释php的正则中, [\x4e00-\x9fa5],其实就是 字符和字符组的概念, \x{hex},表达一个16进制数, 需要注意的是hex 可以是1-2位的,也可以是4位的,但是如果是4位的必须加上大括号,同时,如果是大于x{FF}的hex,必须和u 修饰符连用,不然会非法出错

网上只能找到匹配全角字符的正则: ^[\x80-\xff]*^/ ,这里可以不加大括号 [\u4e00-\u9fa5]可以匹配中文,但是PHP又不支持 不过,既然\x表示的十六进制数据,为什么和js里边提供的范围\x4e00-\x9fa5不一样呢?

于是我就换成了下边的代码,发现真的准确了:

代码如下:

$str = "php编程";

if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str))

{

print("该字符串全部是中文");

}

else

{

print("该字符串不全部是中文");

}

知道了php中utf-8编码下用正则表达式匹配汉字的最终正确表达式——/^[\x{4e00}-\x{9fa5}]+$/u, 参考以上文章写了如下一段测试代码(复制以下代码保存成.php文件)

<?php

$action = trim($_GET['action']);

if($action == "sub")

{

$str = $_POST['dir'];

if(!preg_match("/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u",$str))

{

echo "您输入的[".$str."]含有违法字符";

}

else

{

echo "您输入的[".$str."]完全合法,通过!";

}

}

GBK:

代码如下:

preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str); //GB2312汉字字母数字下划线正则表达式

以上内容就是PHP中UTF-8正则表达式如何匹配汉字的全部内容,希望大家喜欢。

‘伍’ php字符串查找位置 php字符串查找

在PHP中查找字符串的位置或判断字符串是否存在的方法如下

  1. 使用strpos()函数查找字符串位置

    • strpos(string $haystack, mixed $needle [, int $offset = 0 ]): int|false
      • $haystack:要搜索的字符串。
      • $needle:要查找的字符串或字符。
      • $offset:可选参数,表示从$haystack的哪个位置开始搜索。
      • 返回值:如果找到$needle,则返回其在$haystack中第一次出现的位置(从0开始计数);如果未找到,则返回false。
  2. 判断字符串中是否包含另一个字符串

    • 可以使用strpos()函数的返回值进行判断。如果strpos()返回的位置不是false,则说明包含该字符串。
    • 示例代码:if (strpos($haystack, $needle) !== false) { // 包含 }
  3. 使用strrpos()函数查找字符串最后一次出现的位置

    • strrpos(string $haystack, string $needle [, int $offset = 0 ]): int|false
      • 参数与strpos()类似,但返回的是$needle在$haystack中最后一次出现的位置。
  4. 使用strstr()函数判断子串是否存在

    • strstr(string $haystack, mixed $needle [, bool $before_needle = false ]): string|false
      • $haystack:要搜索的字符串。
      • $needle:要查找的子串。
      • $before_needle:如果设置为true,则返回$needle之前的部分。
      • 返回值:如果找到$needle,则返回从$needle第一次出现位置到$haystack末尾的子串;如果未找到,则返回false。

注意事项

以上方法提供了在PHP中查找字符串位置或判断字符串是否存在的多种方式,根据具体需求选择合适的方法即可。

阅读全文

与php字符串查找中文相关的资料

热点内容
php汉字转数字 浏览:705
红米k40怎么加密微信 浏览:814
苹果电脑源码修复 浏览:25
奥数巧算法 浏览:426
未婚个税app怎么填写 浏览:639
oppo程序加密锁怎么解 浏览:625
怎样加密mkv文件 浏览:966
蚊子解压玩偶 浏览:411
java正整数正则表达式 浏览:480
ios的王者号怎么在安卓上登录 浏览:742
精神分裂pdf 浏览:261
程序员用什么品牌内存条 浏览:706
电脑服务器设置ip地址 浏览:904
苏州孕妇溯源码燕窝即食 浏览:348
在线翻译pdf文件 浏览:487
三丰云服务器nginx路径 浏览:857
云无盘服务器配置 浏览:794
大猫解压定格动画 浏览:986
电子书pdf阅读器 浏览:714
python推流 浏览:358