search
HomeBackend DevelopmentPHP Tutorialphp截取中文字符串,在给定字符串第一回出现的位置处进行截取,截取100个字符

php截取中文字符串,在给定字符串第一次出现的位置处进行截取,截取100个字符。
如题,利用下面两种方式进行截取,发现取出的结果都不对,请大家指点下。
其中$word为将要被截取的字符串,$key_word为给定的子串
方法一:

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->mb_substr($word,strpos($word,$key_word)/3,100,'utf-8');


方法二:
PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->$start_key = mb_strpos($word,$key_word);$start_key = $start_key>0?$start_key:0;mb_substr($word,$start_key,100,'utf-8');


------解决方案--------------------
我发现了一个很好用的函数,mb_strimwidth($str, 0, 80, '', 'utf8'),安字符宽度截取
------解决方案--------------------
我真汗了, 不懂编码的人写出来的代码真心让人蛋疼, 都懂的.

记住,strstr/strpos这些是给ASCII字符串用的,也就是1字节1字节比对的,根本不在乎编码,对于GBK/UTF8,在一定情况下也可以正常工作,因为GBK/UTF8的非ASCII字符的单字节都是第7位为1的,但GBK码容易出问题,因为两个2字节字符的1字节拼起来可能造成错误匹配。

MB就是认编码的函数了,所以传给他的以及它返回的数字都是字符数,不是字节数。

你看你第一个代码用strpos了,要是utf8编码还行,其他的说实话都不行。UTF8也就算了,你还假定字符都是3字节。。。这就错了。

第二个代码就靠谱多了,可惜mb_strpos你又没告诉它encoding,这不就完蛋了。




------解决方案--------------------
mb_string 函数组不是这么用法的

mb_internal_encoding("utf-8");
mb_substr($word, mb_strpos($word, $key_word), 100);
------解决方案--------------------
PHP code
//字符串截取,所有字符长度都是1,gbk、utf-8通用。function cut($str, $len = 12, $dot = '...') {    if (mb_strlen($str, "utf-8") 
                 
              
              
        
            
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
实用Word技巧分享:表格自定义样式,美化表格!实用Word技巧分享:表格自定义样式,美化表格!Jul 20, 2022 am 10:25 AM

在之前的文章《实用Word技巧分享:详解怎么更改图片颜色和形状》中,我们了解了更改图片颜色和图片形状的方法。而今天我们来聊一聊word表格,讲解美化表格--自定义表格样式的方法,快来看看吧!

Word与Excel联动:表格借用Word进行分栏打印!Word与Excel联动:表格借用Word进行分栏打印!May 07, 2022 am 10:28 AM

在之前的文章《实用Word技巧分享:聊聊你没用过的“行号”功能》中,我们了解了Word中你肯定没用过的"行号”功能。今天继续实用Word技巧分享,看看Excel表格怎么借用Word进行分栏打印,快来收藏使用吧!

实用Word技巧分享:设置字符间距、行距和段落间距实用Word技巧分享:设置字符间距、行距和段落间距Apr 26, 2022 am 10:25 AM

在之前的文章《实用Word技巧分享:设置页码的终极方法!》中,我们学习了Word页码的设置方法。而今天我们来一起聊聊Word文本间距设置的几个技巧,快来收藏使用吧!

实用Word技巧分享:使页面自动滚动实用Word技巧分享:使页面自动滚动May 02, 2022 am 10:00 AM

在之前的文章《实用Word技巧分享:隐藏图片,提升文档浏览和编辑效率!》中,我们学习了隐藏图片的技巧,可提升文档浏览和编辑效率。下面本篇文章再给大家分享一个实用Word技巧,看看怎么让页面自动滚动,快来收藏使用吧!

实用Word技巧分享:脚注和尾注的设置、转换和删除实用Word技巧分享:脚注和尾注的设置、转换和删除Jul 21, 2022 am 10:29 AM

在之前的文章《实用Word技巧分享:表格自定义样式,美化表格!》中,我们了解了自定义表格样式的方法。而今天我们来聊一聊word脚注和尾注,介绍一下脚注和尾注的设置使用方法,快来看看吧!

实用Word技巧分享:【F4】键快速统一图片大小实用Word技巧分享:【F4】键快速统一图片大小Jun 07, 2022 am 10:27 AM

在之前的文章《实用Word技巧分享:怎么跨文档快速复制样式》中,我们了解了在文档间快速复制样式的方法。今天我们聊聊Word快捷键,聊聊【F4】键快速统一图片大小,快来看看吧!

实用Word技巧分享:表格中如何自动添加编号实用Word技巧分享:表格中如何自动添加编号Apr 22, 2022 am 09:44 AM

在之前的文章《实用Word技巧分享:如何一键删除所有数字》中,我们学习了Word中一键删除所有数字的方法。而今天我们来聊聊Word表格中如何自动添加编号,简单却很实用!

实用Word技巧分享:怎么精控页面的“行数”和“字符个数”实用Word技巧分享:怎么精控页面的“行数”和“字符个数”Jun 01, 2022 am 11:04 AM

在之前的文章《实用Word技巧分享:图、表如何自动编号?》中,我们了解了Word排版-让图、表自动编号的方法。而今天聊聊Word精确控制页面“行数”和“字符个数”的方法,快来看看吧!

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment