php 查找中文字符的位置

时间:2022-07-02 07:45:02
我要实现的功能是:从“采购单条码:PO201112100163”字符串里,截取单号即“PO201112100163”。所以我想要用字符串载取的方式,不过,PHP提供的字符截取函数,对中文字符没效。请问各位有没有好办法。

7 个解决方案

#1


strpos 这个不行吗

#2


多字节用mb_substr()

你的情况也可以用正则匹配出来。

#3


单号都是 字母+数字,可以直接这样取啊。。

#4


引用 1 楼 ci1699 的回复:
strpos 这个不行吗

如果是中文字符的话,strpos这个函数不行,mb_substr是可以截取中文字符,不过要先知道中文字符的开始和长度

#5


谁说 php 字符截取函数不好用呢?
$s = '采购单条码:PO201112100163';
echo substr($s, strrpos($s, ':')+1);
PO201112100163

#6


引用 5 楼 xuzuning 的回复:
谁说 php 字符截取函数不好用呢?
PHP code
$s = '采购单条码:PO201112100163';
echo substr($s, strrpos($s, ':')+1);
PO201112100163


这个方法可以解决到我的问题,感谢。
我之前是想说的是strpos字符查询中文不行

#7


引用 6 楼 babyface201008 的回复:
我之前是想说的是strpos字符查询中文不行
那倒不假,不像手册中说的那样“二进制安全”

#1


strpos 这个不行吗

#2


多字节用mb_substr()

你的情况也可以用正则匹配出来。

#3


单号都是 字母+数字,可以直接这样取啊。。

#4


引用 1 楼 ci1699 的回复:
strpos 这个不行吗

如果是中文字符的话,strpos这个函数不行,mb_substr是可以截取中文字符,不过要先知道中文字符的开始和长度

#5


谁说 php 字符截取函数不好用呢?
$s = '采购单条码:PO201112100163';
echo substr($s, strrpos($s, ':')+1);
PO201112100163

#6


引用 5 楼 xuzuning 的回复:
谁说 php 字符截取函数不好用呢?
PHP code
$s = '采购单条码:PO201112100163';
echo substr($s, strrpos($s, ':')+1);
PO201112100163


这个方法可以解决到我的问题,感谢。
我之前是想说的是strpos字符查询中文不行

#7


引用 6 楼 babyface201008 的回复:
我之前是想说的是strpos字符查询中文不行
那倒不假,不像手册中说的那样“二进制安全”