PHP 8.0支持四种字符串定义方式:单引号(原样输出,仅转义'和)、双引号(解析变量和转义序列)、heredoc(支持插值与多行)、nowdoc(类似heredoc但不解析,用<<<'IDENTIFIER'定义);并新增str_contains()、str_starts_with()等语义清晰的原生函数。

字符串定义与变量赋值
PHP 8.0 支持四种原生字符串定义方式,选择取决于是否需要变量解析和转义处理:
-
单引号字符串:内容原样输出,仅识别
\和',适合固定文本,如$str = 'Hello world'; -
双引号字符串:解析变量(
{$var})和转义序列(、),如$name = "Tom"; echo "Hi, $name"; -
Heredoc:以
<<<IDENTIFIER开始,支持变量插值和多行结构,结束标识必须独占一行且无空格 -
Nowdoc:写法类似 Heredoc,但用单引号包裹标识符(
<<<'IDENTIFIER'),完全不解析变量和转义,适合 SQL 或正则模板
常用基础操作函数
PHP 8.0 保留了所有经典字符串函数,并新增语义更清晰的原生函数:
-
长度获取:用
strlen()获取字节长度;需处理中文等多字节字符时,改用mb_strlen($str, 'UTF-8') -
包含判断:推荐直接使用
str_contains($haystack, $needle)(返回 bool),比strpos() !== false更安全简洁 -
首尾匹配:
str_starts_with($str, 'https')和str_ends_with($str, '.php')替代手动substr()截取比较 -
清理与格式化:用
trim()去除首尾空白;sprintf()拼接带类型控制的字符串,如sprintf('ID: %d, Name: %s', $id, $name)
多关键词与大小写处理
原生函数默认区分大小写,但有对应变体满足不同场景:
- 不区分大小写的包含判断用
stripos($str, $needle) !== false,或封装兼容函数配合str_contains() - 要同时检查多个关键词(如“含 apple 或 banana”),PHP 8.0 无内置函数,建议自定义
str_contains_any(string $haystack, array $needles): bool,内部循环调用str_contains()并短路返回 - 需精确单词匹配(避免 “red” 匹配到 “tired”),应改用
preg_match('/red/i', $str),注意用户输入需先preg_quote()转义
性能与安全注意事项
基础操作看似简单,但细节影响稳定性与效率:
立即学习“PHP免费学习笔记(深入)”;
- 大文本搜索避免正则,优先用
str_contains()或strpos();正则仅在需模式、边界或复杂逻辑时启用 - 拼接大量字符串时,用
.连接比数组implode()更快;但频繁修改建议用StringBuilder思路(即预分配字符串变量) - 用户输入参与字符串操作前,务必过滤或转义,尤其是用于 SQL、HTML 输出或正则时,防止注入或 XSS
- 单引号比双引号解析稍快,若无需变量或转义,优先选单引号提升轻微性能



















