如何在PHP中使用字符串

引言

字符串是由一个或多个字符组成的序列,可以由字母、数字或符号组成。所有的书面通信都是由字符串组成的。因此,它们是任何编程语言的基础。
在本文中,您将学习如何创建和查看字符串的输出,如何使用转义序列,如何连接字符串,如何在变量中存储字符串,以及在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.mzph.cn/news/52423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学历提升的途径,到底有哪些?5步带你搞清楚!

提升学历的方式有哪些&#xff1f; 目前提升有四种形式&#xff0c;分别是统招全日制、自学考试、成人高考、国家开放大学。 它们都是国家承认的学历&#xff0c;学信网可查&#xff0c;可以考公务员、研究生。 统招全日制含金量最高。 之前有一种形式是网络教育&#xff0…

Azure不可变Blob存储

文章目录 Azure不可变Blob存储介绍Azure不可变性策略实战演练 Azure不可变Blob存储介绍 不可变的存储是一种用于存储业务关键型 Blob 数据的存储方式。与可变存储相反&#xff0c;不可变存储的特点是一旦数据被写入后&#xff0c;便无法再对其进行修改或删除。这种存储方式提供…

【leetcode 力扣刷题】交换链表中的节点

24. 两两交换链表中的节点 24. 两两交换链表中的节点两两节点分组&#xff0c;反转两个节点连接递归求解 24. 两两交换链表中的节点 题目链接&#xff1a;24. 两两交换链表中的节点 题目内容&#xff1a; 题目中强调不能修改节点内部值&#xff0c;是因为如果不加这个限制的话…

实验室信息化管理系统的优势及发展趋势

随着现代化实验室的快速发展&#xff0c;实验室数据的管理和处理已经不再是单纯的人工填写、计算和报表编制&#xff0c;实验室管理工作的复杂性和艰巨性与日俱增&#xff0c;传统实验室的管理模式已经无法满足实验室管理的需求。为了解决这些问题&#xff0c;LIMS&#xff08;…

Windows下编译NextCloud desktop 3.9.1

首先从官方下载源码&#xff1a; https://github.com/nextcloud/desktop&#x1f4bb; Desktop sync client for Nextcloud. Contribute to nextcloud/desktop development by creating an account on GitHub.https://github.com/nextcloud/desktop 我选择的是3.9.1的稳定版本…

Elasticsearch(十二)搜索---搜索匹配功能③--布尔查询及filter查询原理

一、前言 本节主要学习ES匹配查询中的布尔查询以及布尔查询中比较特殊的filter查询及其原理。 复合搜索&#xff0c;顾名思义是一种在一个搜索语句中包含一种或多种搜索子句的搜索。 布尔查询是常用的复合查询&#xff0c;它把多个子查询组合成一个布尔表达式&#xff0c;这些…

栈:后进先出的数据结构

栈与队列 在计算机科学中&#xff0c;栈&#xff08;Stack&#xff09;是一种常见的数据结构&#xff0c;它的特殊性在于遵循后进先出&#xff08;Last-In-First-Out&#xff0c;LIFO&#xff09;的原则。栈被广泛应用于各种计算机算法和程序设计中&#xff0c;它的简单而有效…

Spring 为什么使用三级缓存解决循环依赖

文章目录 前言1. 什么是循环依赖1.1 互相依赖1.2 递归依赖 2. Sping中循环依赖有什么问题&#xff1f;3. 什么是三级缓存4. Spring 可以解决哪些情况的循环依赖&#xff1f; 二级缓存作用——普通循环依赖实操环节1. 实例化类A对象2. 实例化类B对象3. B对象完成创建4.继续创建A…

数字图像处理—— Lab、YCbCr、HSV、RGB之间互转

Lab “Lab” 图像格式通常指的是 CIELAB 色彩空间&#xff0c;也称为 Lab 色彩空间。它是一种用于描述人类视觉感知的颜色的设备无关色彩空间&#xff0c;与常见的 RGB 和 CMYK 色彩空间不同。CIELAB 由国际照明委员会&#xff08;CIE&#xff09;于1976年定义&#xff0c;用于…

数据驱动工作效率提升的5个层次—以PreMaint设备数字化平台为例

在现代工业领域&#xff0c;数据分析已成为提升工作效率和优化生产的不可或缺的工具。从描述性分析到规范性分析&#xff0c;数据分析逐步揭示了设备运行和维护的深层信息&#xff0c;帮助企业更明智地做出决策。本文将以PreMaint设备数字化平台为例&#xff0c;探讨工业数据驱…

反转链表(C++)

1、迭代法的一种写法 ListNode* reverse_linkList(ListNode* head){if(head nullptr || head->next nullptr) return head;ListNode* begin nullptr;ListNode* mid head;ListNode* end head->next;while(true){mid->next begin;if(end nullptr){break;}begin …

MySQL常用表级操作

基础信息相关 1.修改表名&#xff1a; rename table 旧表名 to 新表名; 2、修改字段类型&#xff1a; alter table 表名 modify column 字段名 字段类型(长度) 3、修改字段名称和类型&#xff1a; alter table 表名 change 现有字段名称 修改后字段名称 数据类型 4、增加字段&a…

《存储IO路径》专题:DDIO对系统性能的影响

DDIO对系统性的影响 想象一下,有一天,你在网上冲浪,突然,一个巨大的数据包从天而降,直接砸在了你的电脑上。你一看,哇,是全新的《英雄联盟》版本!你迫不及待地打开了游戏,发现加载速度简直快如闪电。 那么,这个神奇的事情是怎么发生的呢? 其实,这都要归功于DDIO技…

Wireshark数据抓包分析之ARP协议

一、实验目的&#xff1a; 通过wireshark的数据抓包了解这个ARP协议的具体内容 二、预备知识: 1.Address Resolution Protocol协议&#xff0c;就是通过目标IP的值&#xff0c;获取到目标的mac地址的一个协议 2.ARP协议的详细工作过程&#xff0c;下面描述得非常清晰&#xff…

230814期优橙5G网络优化就业班开班啦!这样的学习环境泰酷辣!~

230814期为期8天的基础班顺利结束&#xff01; 接下来就是为期3个月的就业班 小优橙一点都不敢耽搁时间 紧跟优橙老师教学节奏 今日通知 230814期优橙就业班今天已经正式开班&#xff01; 本次就业班有哪些新收获&#xff01; 快来跟着学员视角看看8天在优橙真实感受吧~…

四旋翼欧拉方程推导过程

四旋翼欧拉方程推导过程 目录 一、欧拉方程的推导过程二、向量叉乘和叉乘1、向量点乘(内积)2、向量叉乘(外积)3三、矩阵乘法1、矩阵点乘3、矩阵乘法一、欧拉方程的推导过程 (参考:https://www.zhihu.com/question/327324524) 根据定义,角动量的表达式为: H = I ⋅ …

【方案】安防监控EasyCVR智慧工地视频监管风险预警平台的应用

智慧工地方案是一种结合现代化技术与工地管理实践的创新型解决方案。它通过实时监控、数据分析、人工智能等技术手段&#xff0c;使工地管理更加高效、智能化。在建设智慧工地的过程中&#xff0c;除了上述提到的利用物联网技术实现设备互联、数据采集及分析以外&#xff0c;还…

C++学习笔记总结练习:nullptr、NULL、0

三者的区别 参考文献 区别 1 说明 C中的NULL C中使用 ((void*)0)表示空指针。NULL会被替换为 ((void*)0) int *i NULL; foo_t *f NULL;#define NULL ((void*)0)C中的NULL C中void* 不能进行强制类型转换成其他类型的NULL&#xff0c;所以int* 类型的空指针&#xff0c;不…

vue使用插件vue-seamless-scroll无限滚动列表

链接: vue-seamless-scroll插件文档 安装vue-seamless-scroll npm install vue-seamless-scroll --save引入 1、main.js全局引入 import scroll from vue-seamless-scroll Vue.use(scroll)2、局部引入 import vueSeamlessScroll from vue-seamless-scrollcomponents: {vueS…

【Linux】权限问题

Linux权限 一、Linux 权限的概念二、Linux 权限管理1. 文件访问者的分类2. 文件类型和访问权限&#xff08;事物属性&#xff09;3. 文件访问权限的相关设置方法 三、默认权限1. 对文件和目录进行操作需要的权限2. 文件和目录的默认权限3. 粘滞位 一、Linux 权限的概念 Linux …