PHP 零基础入门笔记(11):字符串 String

简介: PHP 零基础入门笔记(11):字符串 String

字符串 String

字符串类型

单引号字符串

双引号字符串

nowdoc 字符串

heredoc 字符串

示例


<?php
// 1、单引号字符串
$str1 = 'hello world';
var_dump($str1);
// string(11) "hello world"
// 2、双引号字符串
$str2 = "hello world";
var_dump($str2);
// string(11) "hello world"
// 3、nowdoc
$str2 = <<<'EOD'
hello world
EOD;
var_dump($str2);
// string(11) "hello world"
// 4、heredoc
$str1 = <<<EOD
hello world
EOD;
var_dump($str1);
// string(11) "hello world"

字符串转义

系统会特殊处理:反斜杠 + 字母


例如:


\r\n 回车换行

PHP 中常用的转义字符


\'  在单引号字符串中显示单引号
\"  在双引号字符串中显示双引号
\r  回车(回到当行的行首)
\n  换行
\t  tab
\$  $在PHP中作为变量符号

单引号和双引号的区别

1、单引号中能够识别\', 而双引号中不能识别\'


<?php
$str1 = 'hello \'world';
$str2 = "hello \'world";
var_dump($str1);
// string(12) "hello 'world"
var_dump($str2);
// string(13) "hello \'world"

2、单引号中不能识别变量,而双引号中能识别$,解析变量


变量本省需要与后面内容有区分,保证变量独立性

使用变量标识符区分,加一组大括号{}

<?php
$a = 'Tom';
$str1 = 'hello $a world';
var_dump($str1);
// string(14) "hello $a world"
$str2 = "hello $a world";
var_dump($str2);
// string(15) "hello Tom world"
$str3 = "hello $aworld";
var_dump($str3);
// PHP Notice:  Undefined variable: aworld
$str4 = "hello {$a}world";
var_dump($str4);
// string(14) "hello Tomworld"

结构化定义字符串变量的规则

结构化定义字符串对应的边界符有条件

上边界符后面不能有任何内容

下边界符必须最左边顶格

下边界符后面只能跟符号,不能跟任何字符

结构化定义字符串的内部(边界符之间)的所有内容都是字符串本身

<?php
$str1 = <<<EOD
hello world
EOD;
var_dump($str1);
// string(11) "hello world"

字符串长度

strlen(string $string): int

示例


<?php
$str1 = 'hello world';
$str2 = '你好世界'; // 中文在utf8字符集下占3个字节
var_dump(strlen($str1)); // int(11)
var_dump(strlen($str2)); // int(12)

多字节字符串扩展模块 mbstring(Multi String)


<?php
$str1 = 'hello world';
$str2 = '你好世界';
var_dump(mb_strlen($str1)); // int(11)
var_dump(mb_strlen($str2)); // int(4)

字符串相关函数

1、转换函数


implode — 将一个一维数组的值转化为字符串
implode(string $glue, array $pieces): string
implode(array $pieces): string
print_r(implode('|', ['北京', '上海', '广州']));
// 北京|上海|广州

explode — 使用一个字符串分割另一个字符串


explode(string $separator, string $string, int $limit = PHP_INT_MAX): array
print_r(explode('|', '北京|上海|广州'));
// Array
// (
//     [0] => 北京
//     [1] => 上海
//     [2] => 广州
// )

str_split — 将字符串转换为数组


str_split(string $string, int $split_length = 1): array
// 注意:中文字符拆分有问题
print_r(str_split('helloworld', 5));
// Array
// (
//     [0] => hello
//     [1] => world
// )

2、截取函数


trim — 去除字符串首尾处的空白字符(或者其他字符)


trim(string $str, string $character_mask = " \t\n\r\0\x0B"): string

ltrim — 删除字符串开头的空白字符(或其他字符)


ltrim(string $str, string $character_mask = ?): string

rtrim — 删除字符串末端的空白字符(或者其他字符)


rtrim(string $str, string $character_mask = ?): string

示例


<?php
var_dump(trim(' 你好,世界 '));
// string(15) "你好,世界"
var_dump(ltrim(' 你好,世界 '));
// string(16) "你好,世界 "
var_dump(rtrim(' 你好,世界 '));
// string(16) " 你好,世界"

substr — 返回字符串的子串


substr(string $string, int $offset, ?int $length = null): string
// 注意:中文字符截取有问题
var_dump(substr('Hello World', 6, 5));
// string(5) "Worl

strstr — 返回 haystack 字符串从 needle 第一次出现的位置开始到结尾的字符串(取文件后缀名)


strstr(string $haystack, mixed $needle, bool $before_needle = false): string
var_dump(strstr('Hello,World', 'W'));
// string(5) "World"

3、大小写转换


strtolower — 将字符串转化为小写


strtolower(string $string): string

strtoupper — 将字符串转化为大写


strtoupper(string $string): string

ucfirst — 将字符串的首字母转换为大写


ucfirst(string $str): string

示例


var_dump(strtolower('Hello, World'));
// string(12) "hello, world"
var_dump(strtoupper('Hello, World'));
// string(12) "HELLO, WORLD"
var_dump(ucfirst('hello, world'));
// string(12) "Hello, world"

4、查找函数


strpos — 返回 needle 在 haystack 中首次出现的数字位置。


strpos(string $haystack, mixed $needle, int $offset = 0): int
var_dump(strpos('Hello, World', 'o'));
// int(4)

strrpos — 返回字符串 haystack 中 needle 最后一次出现的数字位置。


strrpos(string $haystack, string $needle, int $offset = 0): int
var_dump(strrpos('Hello, World', 'o'));
// int(8)

5、替换函数


str_replace — 子字符串替换, 该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。


str_replace(
    mixed $search,
    mixed $replace,
    mixed $subject,
    int &$count = ?
): mixed
var_dump(str_replace('o', 'A', 'Hello, World'));
// string(12) "HellA, WArld"

6、格式化函数


printf — 输出格式化字符串


printf(string $format, mixed $args = ?, mixed $... = ?): int

sprintf — 返回格式化字符串


sprintf(string $format, mixed ...$values): string

格式化参数:https://www.php.net/manual/zh/function.sprintf.php


// 直接输出,返回数字
$ret1 = printf('my name is %s, and year old is %d', 'Tom', 18);
// my name is Tom, and year old is 18
var_dump($ret1); // int(34)
// 返回字符串
$ret2 = sprintf('my name is %s, and year old is %d', 'Tom', 18);
var_dump($ret2);
// string(34) "my name is Tom, and year old is 18"

7、其他


str_repeat — 重复一个字符串


str_repeat(string $input, int $multiplier): string
echo str_repeat('ABC', 5);
// ABCABCABCABCABC

str_shuffle — 随机打乱一个字符串


str_shuffle(string $str): string
echo str_shuffle('ABCDEFG');
// GBEACDF
相关文章
|
21天前
|
存储 Java 测试技术
滚雪球学Java(47):String类教程:如何在Java中使用字符串操作
【6月更文挑战第1天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
21 2
滚雪球学Java(47):String类教程:如何在Java中使用字符串操作
|
8天前
|
编译器 C++
【C++进阶】深入STL之string:模拟实现走进C++字符串的世界
【C++进阶】深入STL之string:模拟实现走进C++字符串的世界
13 1
|
9天前
|
JSON Java 数据格式
如何用String字符串生成JSONObject和JSONArray数据
如何用String字符串生成JSONObject和JSONArray数据
17 1
|
1月前
|
存储 Java
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
|
19天前
|
机器学习/深度学习 XML NoSQL
【Redis】 String 字符串类型常见命令
【Redis】 String 字符串类型常见命令
|
9天前
|
C++ 容器
【C++语言】String 类关键函数实现,手搓一个简单字符串类!
【C++语言】String 类关键函数实现,手搓一个简单字符串类!
|
11天前
|
运维 Serverless API
Serverless 应用引擎产品使用合集之如何使用PHP SDK调用函数并在请求体(body)中传递字符串
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
15天前
|
Java 程序员 API
JavaSE——常用API(1/3)-包、String概述、String常用方法(length、charAt、遍历字符串、toCharArray......)
JavaSE——常用API(1/3)-包、String概述、String常用方法(length、charAt、遍历字符串、toCharArray......)v
11 0
|
29天前
|
C++ 容器
黑马c++ STL部分 笔记(2) string容器
黑马c++ STL部分 笔记(2) string容器
|
30天前
|
存储 NoSQL 关系型数据库
Redis -- String 字符串, 计数命令,字符串操作
Redis -- String 字符串, 计数命令,字符串操作
25 0