php判断字符串长度含换行回车_php换行回车计数说明【技巧】
技术百科
雪夜
发布时间:2026-01-25
浏览: 次 strlen()统计字节数,将\n、\r各计1字节,\r\n计2字节;统计可见字符长需trim()预处理;查换行数用substr_count();含中文等多字节字符时须用mb_strlen()。
strlen() 会把换行符和回车符当做一个字符算
strlen() 统计的是字节数,不是“视觉上的字符数”。在 PHP 中,\n(LF)、\r(CR)或 \r\n(Windows 换行)都会被当作 1 或 2 个字节计入长度:
-
\n→ 1 字节 →strlen()返回 +1 -
\r→ 1 字节 →strlen()返回 +1 -
\r\n→ 2 字节 →strlen()返回 +2
比如:strlen("a\r\nb") 返回 4(a、\r、\n、b),不是 3。
想忽略换行回车只算“可见内容长度”?用 trim() + strlen() 组合
如果目标是判断用户输入的“实际文字长度”,不希望把开头/结尾的空白(含换行、制表、空格)算进去,得先清理:
-
strlen(trim($str, "\r\n\t " ))—— 显式指定要去除的字符 - 更稳妥写法:
strlen(trim($str)),因为trim()默认就处理\r、\n、\t、\0、\x0B和空格 - 注意:这只会去掉首尾,中间的换行仍会被
strlen()计入
要统计“有多少个换行符”?别用 strlen(),改用 substr_count()
如果需求是“这个字符串里有几个换行”,strlen() 完全不适用。正确方式是:
- 查
\n个数:substr_count($str, "\n") - 查
\r\n(Windows 风格)个数:substr_count($str, "\r\n") - 查所有回车或换行(粗略统计行数):
substr_count($str, "\n") + substr_count($str, "\r") - substr_count($str, "\r\n")(避免\r\n被重复计算)
直接对含 \r\n 的字符串用 substr_count($str, "\r") + substr_count($str, "\n") 会多算 1 次,这点容易错。
多字节字符(如中文)下 strlen() 失效,必须用 mb_strlen()
如果字符串含中文、emoji 或其他 UTF-8 多字节字符,strlen() 返回的是字节数,不是字符数。例如:strlen("你好") 返回 6(UTF-8 下每个汉字占 3 字节),但你通常想要的是 “2 个字符”。
- 统一用:
mb_strlen($str, 'UTF-8') - 它同样会把
\n、\r当作 1 个字符计数(因为它们在 UTF-8 中也是单字节) - 若不确定编码,加个检测:
mb_detect_encoding($str),但生产环境建议显式指定'UTF-8'
换行符本身不改变 mb_strlen() 的字符计数逻辑,但它和中文混在一起时,strlen() 和 mb_strlen() 的结果差异会更刺眼——这点常被忽略。
# 的是
# 会把
# windows
# 这只
# 多字
# 要去
# 有几个
# 或其他
# win
# 编码
# 字节
# 字符串
# php
# 行数
# strlen
# 换行
# 换行符
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Python网络异常模拟_测试说明【指导】
- Python安全爬虫设计_IP代理池与验证码识别策
- 如何使用正则表达式提取以编号开头、后接多个注解的逻
- 如何解决同一段404代码在不同主机上表现不一致的问
- Python函数参数高级用法_默认值与可变参数解析
- c# 服务器GC和工作站GC的区别和设置
- 如何使用Golang模拟请求超时_Golang c
- 如何使用Golang构建简易投票统计功能_Gola
- 如何在Golang中实现服务熔断与限流_Golan
- php怎么下载安装后无法解析php文件_服务器配置
- Windows10系统怎么查看CPU核心数_Win
- Go 语言标准库为何不提供泛型切片的 Contai
- 如何在Golang中操作嵌套切片指针_Golang
- Mac怎么设置登录项_Mac管理开机自启动程序【教
- c++ reinterpret_cast怎么用 c
- Win11怎么查看显卡温度 Win11任务管理器查
- Win10如何卸载预装Edge扩展_Win10卸载
- C++如何将C风格字符串(char*)转换为std
- Win11怎么设置鼠标宏_Win11鼠标按键自定义
- MAC怎么截图并快速编辑_MAC自带截图快捷键与标
- phpstudy本地环境mysql忘记密码_重置m
- c++中如何计算坐标系中两点间距离_c++勾股定理
- c++的mutex和lock_guard如何使用
- Windows如何使用BitLocker To G
- Laravel 查询 JSON 列:高效筛选包含数
- 如何使用Golang安装API文档生成工具_快速生
- 手机php怎么转mp4_手机端php文件转mp4a
- 如何使用正则表达式批量替换重复的 *- 模式为固定
- 如何使用Golang log记录不同级别日志_Go
- Win11怎么开启远程桌面_Win11系统远程桌面
- 短链接怎么用php还原_从基础原理到代码实现教学【
- Python项目回滚策略_发布安全说明【指导】
- Go语言中slice追加操作的底层共享机制解析
- Win10怎样安装Excel数据分析工具_Win1
- Go 中 := 短变量声明的类型推导机制详解
- Windows 11无法安全删除U盘提示设备正在使
- Windows怎样关闭桌面弹窗广告_Windows
- windows系统如何安装cab更新补丁_wind
- 如何提升Golang JSON序列化性能_Gola
- C++友元类使用场景_C++类间协作设计方式讲解
- 如何在Golang中使用闭包_封装变量与函数作用域
- Win11怎么更改电脑密码_Windows 11修
- Windows10电脑怎么设置防火墙出站规则_Wi
- Mac自带的词典App怎么用_Mac添加和使用多语
- C++如何使用std::optional?(处理可
- php查询数据怎么导出csv_查询结果转csv文件
- php转mp4怎么设置帧率_调整php生成mp4视
- Mac电脑如何恢复出厂设置_Mac抹掉数据并重装系
- 如何使用Golang实现跨域请求支持_Golang
- 如何使用Golang写入二进制文件_Golang

QQ客服