news 2026/7/24 22:27:06

PHP 字符串函数全指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PHP 字符串函数全指南

PHP 字符串函数全指南

  • PHP 的字符串函数是核心内置能力,覆盖创建、修改、查找、格式化等常见操作,广泛用于表单处理、文本解析、数据清洗与页面渲染
  • 自 PHP 3 起可用,PHP 5 开始补充了不区分大小写的查找/替换等函数;多字节字符串需搭配 mbstring 扩展
  • 了解常见函数的语义与边界行为,对避免编码问题和性能陷阱非常关键

核心概念

  • 字符串是字节序列:strlen统计字节数而非字符数,UTF-8 中文会占多字节
  • 多字节兼容:对 UTF-8 使用mb_strlenmb_substr等以避免截断半个字符
  • 位置从 0 开始:substrstrpos等均以 0 作为首位索引
  • 不变性视角:虽然 PHP 字符串可变,但多数操作返回新字符串,注意赋值覆盖

常用函数速览

  • 长度与截取:strlensubstr
  • 查找与替换:strpos/striposstr_replace/str_ireplace
  • 修剪与填充:trim/ltrim/rtrimstr_pad
  • 大小写转换:strtolower/strtoupperucfirst/ucwords
  • 分割与合并:explodeimplode
  • 重复与格式化:str_repeatsprintf
  • HTML 安全:htmlspecialcharsnl2br

查找与替换

查找首次出现位置(区分大小写 / 忽略大小写)

strpos("Hello World","World");// 6stripos("Hello World","world");// 6

替换子串

str_replace("World","PHP","Hello World");// Hello PHPstr_ireplace("world","PHP","Hello World");// Hello PHP

查找最后出现位置

strrpos("One Two Two","Two");// 8

截取与拼接

基本截取

substr("Hello World",0,5);// Hellosubstr("Hello World",-5);// World

拼接建议

  • 少量拼接可用.运算符
  • 批量拼接避免循环中频繁.=, 先收集数组再统一implode
$parts=["Hello","PHP","World"];echoimplode(" ",$parts);// Hello PHP World

大小写与格式化

大小写转换

strtolower("PHP");// phpstrtoupper("php");// PHPucfirst("hello php");// Hello phpucwords("hello world");// Hello World

格式化输出

sprintf("ID:%04d Name:%s",27,"Alice");// ID:0027 Name:Alice

修剪与填充

修剪首尾空白或指定字符

trim(" Hello ");// Helloltrim(" Hello ");// Hellortrim(" Hello ");// Hellotrim("xxHelloxx","x");// Hello

填充到目标长度

str_pad("ID",5,"0",STR_PAD_LEFT);// 000IDstr_pad("A",3,"-",STR_PAD_RIGHT);// A--

分割与合并

分割字符串为数组

explode(",","a,b,c");// ["a","b","c"]

合并数组为字符串

implode("-",["a","b","c"]);// a-b-c

HTML 安全与换行

防止 XSS,将特殊字符转为 HTML 实体

htmlspecialchars("<b>X</b>",ENT_QUOTES,"UTF-8");// &lt;b&gt;X&lt;/b&gt;

将换行转为<br>标签

nl2br("Line1\nLine2");// Line1<br />Line2

多字节字符串(UTF-8 等)

避免把中文切断,使用 mbstring 函数

mb_strlen("你好","UTF-8");// 2mb_substr("你好世界",0,2,"UTF-8");// 你好
  • 与正则结合时,优先使用/u修饰符或mb_前缀函数,确保按字符而非字节匹配

正则相关(补充)

  • preg_matchpreg_replace用于复杂模式匹配与替换
  • 处理 UTF-8 时建议加u修饰符,避免与字节级匹配混淆
preg_match('/^\p{Han}+$/u',"你好");// 1(只含中文)$text=preg_replace('/world/i','PHP','Hello World');// Hello PHP

性能与最佳实践

  • 连接多个片段优先收集数组并用implode,一次性拼接比循环中的.=更快
  • 对长文本频繁替换,考虑顺序、大小写敏感版本以及是否预编译正则模式
  • 严格处理编码:输入输出均应确认编码一致(通常 UTF-8)
  • 对用户输入渲染到页面时,始终进行htmlspecialchars

常见坑

  • strlen在 UTF-8 下返回字节数,不是字符数;中文会出现长度“偏大”
  • substr在多字节字符串上可能截断半个字符,需改用mb_substr
  • trim第二参数不是正则,是字符列表;传入的每个字符都会被剔除
  • str_replace默认区分大小写;忽略大小写用str_ireplace
  • strpos返回位置或false,位置为 0 与false不同,比较时用===

小抄速表

  • 长度:strlen(字节)、mb_strlen(字符)
  • 截取:substrmb_substr
  • 查找:strpos/striposstrrpos
  • 替换:str_replace/str_ireplacepreg_replace
  • 变换:strtolower/strtoupperucfirst/ucwords
  • 分割/合并:explodeimplode
  • 修剪/填充:trim/ltrim/rtrimstr_pad
  • 格式化/重复:sprintfstr_repeat
  • HTML 安全:htmlspecialcharsnl2br

结语

  • 掌握字符串函数是 PHP 开发的基本功。围绕“编码一致性”“多字节兼容”“性能与安全”做取舍,能让你的文本处理既稳健又高效
  • 实战中优先选用 mbstring 版本的函数处理 UTF-8 文本,并为所有输出到 HTML 的字符串应用htmlspecialchars。对于复杂文本处理,考虑正则与流式方案配合使用
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/18 8:42:40

Java毕设选题推荐:基于spring boot的高校宿舍管理系统设计基于springboot的高校学生宿舍管理系统设计【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/7 5:01:23

数字人民币跨境支付试点启动,稳定币会被取代吗?

一、政策重磅&#xff1a;八部门联合发文&#xff0c;数字人民币出海迈出关键一步2025年12月24日&#xff0c;中国人民银行、国家发展改革委、财政部、交通运输部、商务部、金融监管总局、中国证监会、国家外汇局等八部门联合印发《关于金融支持加快西部陆海新通道建设的意见》…

作者头像 李华
网站建设 2026/7/14 23:41:40

MBA必看!9个降AI率工具推荐,高效避坑指南

MBA必看&#xff01;9个降AI率工具推荐&#xff0c;高效避坑指南 AI降重工具&#xff1a;MBA论文的智能护航者 在当前学术写作中&#xff0c;随着AI技术的广泛应用&#xff0c;论文中的AIGC率问题逐渐成为MBA学生需要重点关注的难点。许多同学在使用AI生成内容时&#xff0c;往…

作者头像 李华
网站建设 2026/7/24 22:14:11

互联网医院系统|禾高互联网医院|互联网医院成品

随着医疗健康服务的数字化进程加速&#xff0c;互联网医院系统已演变为重构医疗资源配置、优化诊疗流程、重塑患者体验的战略性基础设施。其本质并非线下医疗的简单线上化&#xff0c;而是以患者为中心、以数据为驱动、以安全和合规为基石的新型医疗服务模式的综合载体。1、患者…

作者头像 李华
网站建设 2026/7/24 22:14:10

【计算机毕业设计案例】基于spring boot的高校宿舍管理系统设计基于spring boot + vue 的宿舍管理系统(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/24 22:14:08

ClickHouse 监控与告警:确保大数据系统稳定运行

ClickHouse 监控与告警&#xff1a;确保大数据系统稳定运行 关键词&#xff1a;ClickHouse、监控指标、告警策略、大数据系统、稳定性、监控工具、性能优化 摘要&#xff1a;在大数据时代&#xff0c;ClickHouse作为高性能列式数据库&#xff0c;承担着海量数据实时分析的核心任…

作者头像 李华