Skip to content

php_ref_string

字符串是 PHP 中基本的数据类型之一,用于表示字符序列。PHP 提供了丰富的内置函数用于操作字符串。

这些函数涵盖了广泛的操作,包括:

  • 在字符串中搜索和替换文本。
  • 格式化字符串(例如,填充、改变大小写、数字格式化)。
  • 将字符串转换为数组或其他类型,或反之。
  • 比较字符串。
  • 计算字符串长度或哈希值。
  • 编码/解码和转义字符串(例如,用于 HTML 或 SQL)。

这些函数是 PHP 核心的一部分,因此使用它们无需额外安装。

关于字符编码的重要说明: 如果启用了并配置了适当的 mbstring(多字节字符串)扩展,许多字符串函数可以正确处理多字节字符集(如 UTF-8,这是 web 内容的标准)。为了可靠地处理非 ASCII 字符,优先使用相应的 mb_* 函数(例如 mb_strlen() 而不是 strlen(),mb_strtolower() 而不是 strtolower())。

安全注意事项: 处理源自用户输入的字符串时,在使用它们于不同上下文(例如,htmlspecialchars() 用于 HTML 输出,预处理语句用于 SQL 查询)之前,务必对其进行适当的清理和转义,以防止跨站脚本攻击 (XSS) 和 SQL 注入等安全漏洞。

以下是 PHP 中可用的字符串函数的完整列表。虽然列出了所有函数供参考,但一些关键且常用的函数包括 strlen、strpos、substr、str_replace、explode、implode、htmlspecialchars、trim、strtolower、strtoupper。

Function 描述
--------------------------- ------------------------------------------------------------------------
addcslashes() 在 C 风格中用反斜杠引用字符串
addslashes() 为数据库使用添加反斜杠引用字符串(请使用预处理语句代替!)
bin2hex() 将二进制数据转换为十六进制表示
chop() rtrim() 的别名
chr() 从 ASCII 值生成一个单字节字符串
chunk_split() 将字符串分割成较小的块
convert_cyr_string() 将一个西里尔字符集转换为另一个
convert_uudecode() 解码 uuencoded 字符串
convert_uuencode() Uuencode 字符串
count_chars() 返回字符串中使用字符的信息
crc32() 计算字符串的 crc32 多项式
crypt() 单向字符串哈希(密码用途已弃用 - 请使用 password_hash())
echo() 输出一个或多个字符串
explode() 使用字符串分割字符串为数组
fprintf() 将格式化字符串写入流
get_html_translation_table() 返回 htmlspecialchars() 和 htmlentities() 使用的转换表
hebrev() 将逻辑希伯来语文本转换为可视文本
hebrevc() 将逻辑希伯来语文本转换为带换行符转换的可视文本
hex2bin() 解码十六进制编码的二进制字符串
html_entity_decode() 将 HTML 实体转换回字符
htmlentities() 将所有适用字符转换为 HTML 实体
htmlspecialchars_decode() 将特殊的 HTML 实体转换回字符
htmlspecialchars() 将特殊字符转换为 HTML 实体(对安全至关重要)
implode() / join() 使用字符串连接数组元素
lcfirst() 将字符串的第一个字符转为小写
levenshtein() 计算两个字符串之间的 Levenshtein 距离
localeconv() 获取数字格式化信息
ltrim() 移除字符串开头的空白字符(或其他字符)
md5() 计算字符串的 MD5 哈希值(不安全用于密码)
md5_file() 计算指定文件的 MD5 哈希值(不安全用于密码)
metaphone() 计算字符串的 metaphone 键
money_format() 将数字格式化为货币字符串(已弃用;请使用 NumberFormatter)
nl_langinfo() 查询语言和区域设置信息
nl2br() 在字符串的所有换行符前插入 HTML 换行符
number_format() 将数字按千位分组格式化
ord() 返回字符串第一个字符的 ASCII 值
parse_str() 将字符串解析为变量(例如,查询字符串)
print() 输出一个字符串
printf() 输出格式化字符串
quoted_printable_decode() 将 quoted-printable 字符串转换为 8 位字符串
quoted_printable_encode() 将 8 位字符串转换为 quoted-printable 字符串
quotemeta() 引用元字符
rtrim() 移除字符串末尾的空白字符(或其他字符)
setlocale() 设置区域设置信息
sha1() 计算字符串的 SHA-1 哈希值(不安全用于密码)
sha1_file() 计算文件的 SHA-1 哈希值(不安全用于密码)
similar_text() 计算两个字符串之间的相似度
soundex() 计算字符串的 soundex 键
sprintf() 返回格式化字符串
sscanf() 根据格式解析字符串输入
str_contains() (PHP 8+) 判断字符串是否包含给定的子字符串
str_ends_with() (PHP 8+) 检查字符串是否以给定的子字符串结尾
str_getcsv() 将 CSV 字符串解析为数组
str_ireplace() str_replace() 的不区分大小写版本
str_pad() 用另一个字符串填充字符串到指定长度
str_repeat() 重复字符串
str_replace() 将查找字符串的所有出现替换为替换字符串
str_rot13() 对字符串执行 ROT13 转换
str_shuffle() 随机打乱字符串
str_split() 将字符串转换为字符数组
str_starts_with() (PHP 8+) 检查字符串是否以给定的子字符串开头
str_word_count() 返回字符串中使用单词的信息
strcasecmp() 二进制安全的不区分大小写字符串比较
strchr() strstr() 的别名
strcmp() 二进制安全的区分大小写字符串比较
strcoll() 基于区域设置的字符串比较
strcspn() 查找不匹配掩码的初始段长度
strip_tags() 从字符串中移除 HTML 和 PHP 标签
stripcslashes() 解除 addcslashes() 引用的字符串
stripslashes() 解除 addslashes() 引用的字符串(正确转义后需求较少)
stripos() 查找子字符串第一次出现的位置(不区分大小写)
stristr() strstr() 的不区分大小写版本
strlen() 获取字符串长度(基于字节;多字节请使用 mb_strlen())
strnatcasecmp() 使用“自然顺序”算法进行不区分大小写的字符串比较
strnatcmp() 使用“自然顺序”算法进行字符串比较
strncasecmp() 二进制安全的不区分大小写比较前 n 个字符
strncmp() 二进制安全的比较前 n 个字符
strpbrk() 在字符串中搜索字符集中的任意字符
strpos() 查找子字符串第一次出现的位置(区分大小写)
strrchr() 查找字符在字符串中最后一次出现的位置
strrev() 反转字符串
strripos() 查找字符串最后一次出现的位置(不区分大小写)
strrpos() 查找子字符串最后一次出现的位置(区分大小写)
strspn() 查找匹配掩码的初始段长度
strstr() 查找字符串第一次出现的位置(区分大小写)
strtok() 分割字符串(使用 explode() 或 preg_split() 更灵活)
strtolower() 将字符串转为小写(多字节请使用 mb_strtolower())
strtoupper() 将字符串转为大写(多字节请使用 mb_strtoupper())
strtr() 转换字符或替换子字符串
substr() 返回字符串的一部分(多字节请使用 mb_substr())
substr_compare() 二进制安全地比较两个字符串从某个偏移量开始、指定长度的子字符串
substr_count() 计算子字符串出现的次数
substr_replace() 替换字符串一部分中的文本
trim() 移除字符串开头和末尾的空白字符(或其他字符)
ucfirst() 将字符串的第一个字符转为大写
ucwords() 将字符串中每个单词的第一个字符转为大写
vfprintf() 使用参数数组将格式化字符串写入流
vprintf() 使用参数数组输出格式化字符串
vsprintf() 使用参数数组返回格式化字符串
wordwrap() 将字符串按指定字符数换行

密码哈希: 切勿直接使用 md5()、sha1() 或 crypt() 来存储密码。始终使用现代的 password_hash() 函数创建安全的密码哈希,并使用 password_verify() 来验证它们。