news 2026/4/16 12:14:19

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/4/5 23:42:15

高频注入法的永磁同步电机无传感器控制 高频电压信号注入法 无速度传感器 matlab 仿真 不含文档

高频注入法的永磁同步电机无传感器控制 高频电压信号注入法 无速度传感器 matlab 仿真 不含文档&#xff0c;其他无传感器方法含有文档&#xff0c;高频注入法这玩意儿在永磁同步电机无传感器控制里就像给盲人装了个声呐系统。咱都知道传统方法在低速时容易翻车&#xff0c;这时…

作者头像 李华
网站建设 2026/4/16 12:13:13

AI搜索革命:深度拆解GEO优化的技术原理与品牌可见性

摘要随着ChatGPT、DeepSeek、Kimi等生成式AI工具月活用户突破数亿&#xff0c;并重塑消费者的决策入口&#xff0c;一种全新的营销范式——GEO&#xff08;生成式引擎优化&#xff09;正在崛起。与优化网页排名的传统SEO不同&#xff0c;GEO旨在让品牌内容直接被AI理解、信任并…

作者头像 李华
网站建设 2026/4/16 2:06:19

基于SpringBoot+Vue的前后端分离在线学习平台的设计与实现毕业设计

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。 一、研究目的 本研究旨在设计并实现一个基于SpringBootVue的前后端分离在线学习平台。该平台旨在为用户提供一个高效、便捷、个性化的在线学习环境&#xff0c;同时满足教…

作者头像 李华
网站建设 2026/4/9 22:07:48

Java毕设项目推荐-基于spring boot + vue 的宿舍管理系统宿舍管理工作基于spring boot的高校宿舍管理系统设计【附源码+文档,调试定制服务】

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

作者头像 李华
网站建设 2026/3/31 13:35:57

2026软件测试面试题-mysql

1.mysql中的group by和order by区别&#xff1f; order by作用就是排序&#xff0c;desc降序&#xff0c;osc升序&#xff0c;默认升序&#xff0c;order by 后面必须列出排序的字段名&#xff0c;跟多个字段名时&#xff0c;排序按就近原则依次而来。 group by作用就是聚合分…

作者头像 李华
网站建设 2026/4/15 16:10:55

【毕业设计】基于springboot的考研学生在线学习与交流系统的设计与实现(源码+文档+远程调试,全bao定制等)

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

作者头像 李华