字符串是由一个或多个字符组成的序列,可以由字母、数字或符号组成。所有的书面通信都是由字符串组成的。因此,它们是任何编程语言的基础。
在本文中,您将学习如何创建和查看字符串的输出,如何使用转义序列,如何连接字符串,如何在变量中存储字符串,以及在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对空白的渲染是不同的。新行需要
标签,所以即使你的源代码可能有新行,你也不会看到这些新行显示在网页上。类似地,无论代码中有多少个空格,字符之间只显示一个空格。
HTML OutputSammy The (silly) Shark
整洁一致地使用空格是提高代码可读性的最佳工具之一。由于PHP基本上忽略了空格,因此您可以充分利用它的灵活性。集成开发环境(IDE)可以帮助您与代码保持一致,并使用空白。
能够控制字符串的呈现方式对于与应用程序的最终用户通信至关重要。通过更新和组合包含特殊字符的变量,您可以清楚地传达信息,同时尽量减少重复。
继续处理字符串时,请记住这三个方面。