PHP 字符串处理
字符串是 PHP 中最常见的数据类型,PHP 提供了超过 100 个字符串处理函数。
字符串定义
// 单引号:不解析变量,性能略高 $str1 = '这是一个字符串';`// 双引号:解析变量和转义字符 $name = "张三"; $str2 = "你好,$name!"; // 你好,张三! $str3 = "你好,{$name}!"; // 推荐写法,更清晰
// Heredoc:适合多行字符串 $html = <<<EOT <div> <p>$name</p> </div> EOT;
// Nowdoc:类似单引号,不解析变量 $raw = <<<'EOT' 变量 $name 不会被解析 EOT; ?> ``
常用字符串函数
长度与大小写
php <?php $str = "Hello, World!";`echo strlen($str); // 13(字节数) echo mb_strlen($str); // 13(字符数,支持中文)
echo strtoupper($str); // HELLO, WORLD! echo strtolower($str); // hello, world! echo ucfirst("hello"); // Hello echo ucwords("hello world"); // Hello World ?>
`查找与替换
php <?php $str = "PHP 是世界上最好的语言,PHP 很流行";`// 查找位置 echo strpos($str, "PHP"); // 0(第一次出现) echo strrpos($str, "PHP"); // 14(最后一次出现)
// 判断是否包含(PHP 8+) echo str_contains($str, "最好"); // true echo str_starts_with($str, "PHP"); // true echo str_ends_with($str, "流行"); // true
// 替换 echo str_replace("PHP", "Python", $str); // Python 是世界上最好的语言,Python 很流行
// 不区分大小写替换 echo str_ireplace("php", "Go", $str); ?>
`截取与分割
php <?php $str = "Hello, World!";`echo substr($str, 7); // World! echo substr($str, 7, 5); // World echo substr($str, -6); // orld!(从末尾)
// 分割 $csv = "苹果,香蕉,橙子,葡萄"; $arr = explode(",", $csv); print_r($arr); // ["苹果", "香蕉", "橙子", "葡萄"]
// 合并 echo implode(" | ", $arr); // 苹果 | 香蕉 | 橙子 | 葡萄 ?>
`清理与格式化
php <?php // 去除空白 $str = " Hello World "; echo trim($str); // "Hello World" echo ltrim($str); // "Hello World " echo rtrim($str); // " Hello World"`// 填充 echo str_pad("5", 3, "0", STR_PAD_LEFT); // 005 echo str_repeat("=-", 5); // =-=-=-=-=-=-
// 格式化数字 echo number_format(1234567.891, 2, '.', ','); // 1,234,567.89 echo sprintf("%.2f", 3.14159); // 3.14 echo sprintf("%05d", 42); // 00042 ?>
`正则表达式
php <?php $email = "user@example.com";`// 匹配 if (preg_match('/^[\w.]+@[\w.]+\.\w{2,}$/', $email)) { echo "邮箱格式正确"; }
// 提取所有匹配 $html = '<a href="https://php.net">PHP</a> <a href="https://mysql.com">MySQL</a>'; preg_match_all('/href="([^"]+)"/', $html, $matches); print_r($matches[1]); // ["https://php.net", "https://mysql.com"]
// 替换 $str = "2024-01-15"; echo preg_replace('/(\d{4})-(\d{2})-(\d{2})/', '$3/$2/$1', $str); // 15/01/2024 ?>
mb_中文字符串处理
处理中文必须使用
系列函数:``php <?php $str = "你好,世界!";echo mb_strlen($str); // 6(字符数) echo mb_substr($str, 0, 2); // 你好 echo mb_strtoupper("hello"); // HELLO echo mb_strpos($str, "世界"); // 3
// 确保设置编码 mb_internal_encoding("UTF-8");