如何在PHP中使用字符串

news/2025/2/21 18:56:48/

引言

字符串是由一个或多个字符组成的序列,可以由字母、数字或符号组成。所有的书面通信都是由字符串组成的。因此,它们是任何编程语言的基础。
在本文中,您将学习如何创建和查看字符串的输出,如何使用转义序列,如何连接字符串,如何在变量中存储字符串,以及在PHP中使用引号、撇号和换行符的规则。

单引号和双引号字符串

在PHP中,您可以通过将字符序列括在单引号或双引号中来创建字符串。PHP实际上会以不同的方式解释以下字符串:

'这是一个单引号字符串';
"这是一个双引号字符串";

在输出之前,双引号字符串将计算和解析字符串中的任何变量或转义序列。单引号字符串将精确地输出指定的每个字符。单引号字符串的例外是单引号(必要时是反斜杠)。

如果你在PHP中echo这个字符串:

'Sammy says: "This string\'s in single quotes." It required a backslash (\) before the apostrophes (\\\'), but do not use (\") with the double quotes.'

它将返回以下输出:

OutputSammy says: "This string's in single quotes." It required a backslash (\) before the apostrophes (\'), but do not use (\") with the double quotes.

如果在单引号字符串的撇号前没有包含反斜杠,PHP将在该点结束字符串,这将导致错误。由于您使用单引号来创建我们的字符串,因此您可以在其中包含双引号,以作为PHP输出的最终字符串的一部分。
如果你想渲染\'序列,你必须使用三个反斜杠(\\\')。首先是\\来渲染反斜杠本身,然后是\'来渲染撇号。序列\"完全按照指定的方式渲染。

"Sammy says: \"This string's in double quotes.\" It requires a backslash (\) before the double quotes (\\\"), but you MUST NOT add a backslash before the apostrophe (\')."
OutputSammy says: "This string's in double quotes." It requires a backslash (\) before the double quotes (\"), but you MUST NOT add a backslash before the apostrophe (\').

与单引号字符串一样,如果在双引号字符串的双引号之前没有包含反斜杠,PHP将在该点结束字符串,这将导致错误。由于双引号字符串不是以单引号结束的,因此可以直接将撇号添加到双引号字符串中。双引号字符串将输出\',其中包含与撇号一起使用的单反斜杠或双反斜杠。

要输出\"序列,必须使用三个反斜杠。首先用\\来渲染反斜杠本身,然后用\"来渲染双引号。序列\'完全按照指定的方式渲染。

\是一种转义字符。与第二个字符结合,组成一个转义序列。现在你已经了解了字符串,让我们回顾一下转义序列。

转义字符

转义字符告诉程序停止正常的操作程序,并以不同的方式对下列字符进行计算。

在PHP中,转义序列以反斜杠\开始。转义序列适用于双引号字符串。单引号字符串只对单引号或反斜杠使用转义序列。

下面是双引号字符串的一些常见转义序列:

  • \"表示双引号
  • \\是反斜杠
  • \$渲染美元符号,而不是展开变量
  • \n表示换行
  • \t表示TAB

下面的例子展示了如何在字符串中使用这些序列:

"\"What type of \$ do sharks use?\"\n\tSand dollars!"
Output"What type of $ do sharks use?"Sand dollars!

使用转义序列使我们能够构建任何需要的字符串,同时包含这些特殊字符。

创建并查看字符串的输出

双引号字符串最重要的特性是变量名会被展开,得到变量的值。你可以使用变量代替字符串,也可以直接使用字符串。你可以通过调用echo函数来输出字符串:

$my_name = "Sammy";
echo 'Name is specified using the variable $my_name.';
echo "\n"; // escape sequence for newline character
echo "Hello, my name is $my_name. It's stored in the variable \$my_name.";

$my_name变量在第一行被创建。在第二行中,echo函数用于输出一个用单引号括起来的字符串。在这个单引号字符串中使用$my_name变量,将完全按照字符的书写方式显示字符,因此我们将看到变量名而不是它的值。
在第四行,我们再次使用echo函数,但这次我们使用双引号。这一次展开变量,显示第一个句子中的值。在下一个句子中,在$之前有一个\,它明确地告诉字符串显示一个$字符,并且不要展开变量。

OutputName is specified using the variable $my_name.
Hello, my name is Sammy. It's stored in the variable $my_name.

注意:当不需要考虑字符串计算时,你可以选择使用单引号或双引号,但无论你选择哪种,都应该在程序中保持一致。单引号可能略微更快
了解了如何创建和查看字符串的输出后,让我们继续看看如何操作字符串。

字符串拼接

拼接意味着将字符串端到端连接在一起,以构建一个新的字符串。在PHP中,有两种主要的方法来连接字符串。
第一种是在双引号括起来的字符串中包含一个字符串变量。在上一步和下面的代码中可以看到:

$answer = "Chews wisely.";
echo "What do sharks do when they have a big choice to make? $answer";

运行这段代码会将字符串和$answer变量结合起来,变量被设置为Chews wisely.:

OutputWhat do sharks do when they have a big choice to make? Chews wisely.

第二种连接字符串的方法是使用.操作符。
让我们通过一个echo语句连接字符串"Sammy""Shark":

echo "Sammy" . "Shark";

这段代码使用了.运算符将字符串"Sammy"和字符串"Shark"组合在一起,中间没有空格。

OutputSammyShark

如果你希望两个字符串之间有空格,就必须在字符串中包含这些空格,比如在单词Sammy后面:

echo "Sammy " . "Shark";
OutputSammy Shark

你不能使用拼接将字符串和整数合并:

echo "Sammy" . 27;

This will produce an error:

OutputParse error: syntax error, unexpected '.27' (T_DNUMBER), expecting ';' or ',' in php shell code on line 1

如果你把"27"放在引号中,它将被求值为一个字符串。
PHP是一种**松散类型(loosely typed)**的语言,这意味着它将尝试根据请求转换给出的数据。如果你将变量设置为27,当与字符串连接时,PHP将将该变量解析为字符串:

$my_int = 27;
echo "Sammy" . $my_int;
OutputSammy27

前面介绍了拼接或合并字符串的两种主要方法。有时你可能想完全替换或添加字符串。接下来,让我们探索PHP如何允许您覆盖或更新字符串。

更新字符串

PHP中的普通变量是可变的,这意味着它们可以被更改或覆盖。让我们来看看当你改变$my_name变量的值时会发生什么:

$my_name = "Sammy";
echo $my_name . "\n";
$my_name = "Shark";
echo $my_name;
OutputSammy
Shark

首先,变量被设置为"Sammy"并使用echo显示。然后它被设置为"Shark",覆盖了变量,因此当echo第二次被调用时,它会显示"Shark"的新值。
你可以使用拼接赋值运算符.=将值添加到字符串的末尾,而不是覆盖变量:

$my_name = "Sammy";
$my_name .= " Shark";
echo $my_name;

首先,你将$my_name变量设置为"Sammy",然后使用.=运算符,在它的末尾添加" Shark"$my_name的新值是Sammy Shark

OutputSammy Shark

要在字符串的开头加上,你需要在使用原始字符串时进行覆盖:

$my_name = "Shark";
$my_name = "Sammy " . $my_name;
echo $my_name;

这一次,你首先将$my_name变量设置为"Shark",然后使用=操作符用新的字符串"Sammy "$my_name变量之前的值(在被覆盖之前是"Shark")来覆盖$my_name变量。$my_name的最终值是Sammy Shark

OutputSammy Shark

覆盖、追加和添加使我们能够更改和构建应用程序所需的字符串。

字符串中的空白

因为PHP不关心空格,所以您可以在引号中放入任意数量的空格或换行符。

echo "Sammy
The           (silly)
Shark";
TEXT OutputSammy
The           (silly)
Shark

请记住,HTML对空白的渲染是不同的。新行需要<br>标签,所以即使你的源代码可能有新行,你也不会看到这些新行显示在网页上。类似地,无论代码中有多少个空格,字符之间只显示一个空格。

HTML OutputSammy The (silly) Shark

整洁一致地使用空格是提高代码可读性的最佳工具之一。由于PHP基本上忽略了空格,因此您可以充分利用它的灵活性。集成开发环境(IDE)可以帮助您与代码保持一致,并使用空白。

总结

能够控制字符串的呈现方式对于与应用程序的最终用户通信至关重要。通过更新和组合包含特殊字符的变量,您可以清楚地传达信息,同时尽量减少重复。
继续处理字符串时,请记住这三个方面。

  1. 要特别注意字符串中的引号。
  2. 使用拼接来合并字符串。
  3. 使用变量使字符串可重用。

http://www.ppmy.cn/news/1056037.html

相关文章

Linux服务——http协议及nginx服务

目录 一、HTTP协议 1、跨网络的主机间通讯方式 套接字相关的系统调用 2、HTTP协议访问网站的过程 3、http协议状态码分类 常见的http协议状态码 4、MIME 5、URL组成 6、HTTP协议版本 7、系统处理http请求的工作模式 8、apache与nginx的区别 二、I/O模型 I/O模型相关…

高性能服务器Nodejs业务实战

目录 1 项目初始化1.1 创建项目1.2 配置 cors 跨域1.3 配置解析表单数据的中间件1.4 初始化路由相关的文件夹1.5 初始化用户路由模块1.6 抽离用户路由模块中的处理函数 2 登录注册2.1 新建 ev_users 表2.2 安装并配置 mysql 模块2.3 注册2.4 优化 res.send() 代码2.5 优化表单数…

Unity 3D之 利用Vector3 计算移动方向,以及实现位移多少

文章目录 先分析代码&#xff0c;从代码中了解Vector3 moveDirection new Vector3(10f, 0f, 100f);合法吗Vector3 moveDirection new Vector3 (xf,yf,zf)不是用来表示三维坐标的怎么表示在某个方向的位移 先分析代码&#xff0c;从代码中了解 这段代码是一个在游戏开发中常见…

windows一键启动jupyter

windows一键启动jupyter jupyter简介 Jupyter是一个开源的交互式计算环境&#xff0c;主要用于数据分析、数据可视化和科学计算。它的名字来源于三种编程语言的缩写&#xff1a;Julia、Python和R&#xff0c;这三种语言都可以在Jupyter环境中运行。如果您想进行数据分析、科学…

软考高级系统架构设计师系列论文七十三:论中间件在SIM卡应用开发中的作用

软考高级系统架构设计师系列论文七十三:论中间件在SIM卡应用开发中的作用 一、中间件相关知识点二、摘要三、正文四、总结一、中间件相关知识点 软考高级系统架构设计师:构件与中间件技术二、摘要 我曾于近期参与过一个基于SIM卡应用的开发项目,并在项目中担任系统分析的工作…

git配置代理(github配置代理)

命令行配置代理方式一git config --global http.proxy http://代理服务器地址:端口号git config --global https.proxy https://代理服务器地址:端口号如果有用户名密码按照下面命令配置 git config --global http.proxy http://用户名:密码代理服务器地址:端口号git config --…

MySQL ON DUPLICATE KEY UPDATE用法

在MySQL中&#xff0c;ON DUPLICATE KEY UPDATE是一种在插入数据时&#xff0c;如果遇到重复的键值&#xff0c;则执行更新操作的语法。 使用ON DUPLICATE KEY UPDATE时&#xff0c;需要在插入语句中指定要插入的数据和更新的数据。当插入的数据遇到重复键值时&#xff0c;MyS…

Android相机-HAL-Rockchip-hal3

引言&#xff1a; 对于Android相机的 HAL层而言对上实现一套Framework的API接口&#xff0c;对下通过V4L2框架实现与kernel的交互。不同的平台会有不同的实现方案。主要是对Android HAL3的接口的实现。看看rockchip是怎么支持hal3的&#xff1f; 代码目录&#xff1a; hardw…