作者选择Open Sourcing Mental Illness Ltd接受捐赠,作为Write for DOnations计划的一部分。
介绍
字符串是一个或多个字符的序列,可能由字母、数字或符号组成。所有书面交流都是由字符串组成的。因此,它们是任何编程语言的基础。
在本文中,您将学习如何创建和查看字符串的输出、如何使用转义序列、如何连接字符串、如何在变量中存储字符串以及在 PHP 中使用引号、撇号和换行符的规则.
单引号和双引号字符串
您可以在 PHP 中通过用单引号或双引号括起一系列字符来创建字符串。PHP 实际上会以不同的方式解释以下字符串:
'This is a string in single quotes.'
"This is a string in double quotes."
在输出之前,双引号字符串将评估和解析字符串中的任何变量或转义序列。单引号字符串将完全按照指定输出每个字符。单引号字符串的例外是单引号(以及需要时的反斜杠)。
如果您echo
在 PHP中使用此字符串:
'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
对于选项卡
以下是如何在字符串中使用这些序列的示例:
"\"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.
连接字符串的第二种方法是使用.
运算符。
让我们通过一个语句将字符串"Sammy"
和"Shark"
连接在一起echo
:
echo "Sammy" . "Shark";
此代码使用.
运算符将"Sammy"
字符串和"Shark"
字符串组合在一起,中间没有空格。
OutputSammyShark
如果您希望两个字符串之间有空格,则必须在字符串中包含空格,例如在单词之后Sammy
:
echo "Sammy " . "Shark";
OutputSammy Shark
您不能使用串联将字符串与整数组合:
echo "Sammy" . 27;
这会产生一个错误:
OutputParse error: syntax error, unexpected '.27' (T_DNUMBER), expecting ';' or ',' in php shell code on line 1
如果放在"27"
引号内,它将评估为字符串。
PHP 是一种松散类型语言,这意味着它会尝试根据请求转换给定的数据。如果将变量设置为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"
,然后使用=
运算符$my_name
用新字符串覆盖变量"Sammy "
,并结合$my_name
变量的先前值,该值在被覆盖之前是"Shark"
。对于最终的价值$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)可以帮助您与您的代码和使用的空白一致。
结论
能够控制我们的字符串呈现方式对于与应用程序的最终用户进行通信至关重要。通过更新和组合包含特殊字符的变量,您可以在将重复次数降至最低的同时进行清晰的交流。
当您继续使用字符串时,请记住以下三个方面:
- 特别注意字符串中的引号。
- 使用连接来组合您的字符串。
- 使用变量使您的字符串可重用。
如果您想阅读有关 PHP 的更多信息,请查看PHP 主题页面。