目录
3-1创建一个字符串文字
3-2连接字符串
3-3echo 和 print 用于字符串输出的区别
3-4转义序列的类型和使用
3-5扩展字符串中的变量
3-6使用 Heredocs 创建字符串文字
创建一个字符串文字
字符串文字是字符串类型的值。在程序中描述一个字符串时,用单引号('
)或双引号("
)将一组的一个或多个字符括起来 。
'你好'
"你好"
例如:
“你好世界”
“山东省青岛市”
两者都可以,但是变量在字符串中扩展的处理是不同的。
字符串也可以将它们分配给变量来使用。
$msg = 'Hello World';
$pref = "青岛市";
使用[‘]和[”]作为字符
如果您想使用单引号 ('
) 或双引号 ( "
) 作为字符串中的字符,请使用与您要使用的引号不同的引号来创建您的字符串。例如,如果要在字符串中使用单引号 ('
),请将其括在双引号 ( "
) 中。
〇 '今天是“星期天”'
〇 "I'm a teacher"
例如,在字符串中使用单引号 ('
) 时,不能将它们括在单引号 ( '
) 中。
× “今天是“星期天””
× 'I'm a teacher'
这是因为计算机不知道字符串的开始和结束位置。
如果要在字符串中使用单引号('
),或者使用双引号 ( "
) ,也可以使用反斜杠( \
) 进行转义。这样电脑就会认知单引号或者双引号是代表文字,而不是程序。
〇 "今日是\"星期天""
〇 'I\'m a teacher'
例如:sample.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>PHP TEST</title>
</head>
<body>
<p>
<?php echo "你好<br>"; ?>
<?php echo 'good morning'; ?>
</p>
</body>
</html>
将上面的sample.php放到WEB服务器上,用浏览器打开之后。
使用[.]连接字符串
运算符之一,用点 ( .
)连接字符串。
"字符串1"."字符串2"
在上面的例子中,“string1”和“string2”被连接起来创建一个新的字符串“string1string2”。
您还可以将一个字符串分配给一个变量,然后与另一个字符串连接起来。
$pref = "青岛";
echo $pref."市南区";
在上述情况下,输出“青岛市南区”。
使用变量扩展连接字符串
对于用双引号 ( "
) 括起字符串,如果在字符串中写入变量,赋给变量的值将在字符串中展开。
请参见以下示例。
$pref = "市南区";
echo "青岛市{$pref}";
在这种情况下,{$pref}
该部分被扩展并$pref
替换为“市南区”,这是分配给变量的值。
也就是下面的内容:
echo "青岛市市南区";
通过以这种方式在字符串中使用变量扩展,您可以创建一个字符串,该字符串是字符串和分配给变量的字符串的串联。
示例代码
让我们用一个简单的程序来试试吧。
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>PHP TEST</title>
</head>
<body>
<p>
<?php
$pref = "市南区";
echo "青岛市".$pref."<br>";
echo "青岛市{$pref}";
?>
</p>
</body>
</html>
我将其保存在网络服务器的文档根目录中,文件名为 sample.php
然后从您的浏览器访问它。
什么是echo
echo
用于打印一个或多个字符串
echo(string ...$expressions): void
echo
输出参数中指定的字符串。要连续输出多个字符串,
请指定以逗号 (, ) 分隔的字符串。它没有返回值。
echo '你好';
echo '家乡:', '青岛市';
echo
是PHP
一个语言结构,而不是一个函数。因此您不必像用函数那样将参数括在括号()
中。虽然不推荐,但是也可以像函数一样用括号括起来来描述。
echo('你好');
* 但是,当指定多个字符串作为参数时,请勿将它们括在括号中。
什么是print
print
用于打印单个字符串。
print(string $expression): int
print
输出参数中指定的字符串。与 echo
不同,您不能指定多个参数。也总是返回 1 作为返回值。
print '你好';
print
是PHP
一个语言结构,而不是一个函数。因此,您不必像调用函数时那样将参数括在括号()
中。虽然不推荐,但是也可以像函数一样用括号括起来来描述。
print ('你好');
它是否输出单个字符串基本上和echo
没有区别。但是如果用print
输出字符串,但是在输出多个字符串时,就改为echo,会比较混乱,所以如果没有特别的原因,还是统一使用echo比较好。
示例代码
让我们用一个简单的程序来试试吧
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>PHP TEST</title>
</head>
<body>
<p>
<?php
$pref = "青岛市";
echo $pref, "市南区" ,"<br>";
print "你好"
?>
</p>
</body>
</html>
我将其保存在网络服务器的文档根目录中,文件名为sample.php
,然后从您的浏览器访问它。
转义序列的类型和使用
当字符串用单引号 ( '
) 括起来时,可以使用以下转义序列 。
\' 单引号
\\ 反斜杠(\)
如果你想把['
]当作字符串中的一个字符来用,那么写法是这样,[ \'
]
echo '我的家乡是\'青岛市\'市南区";
当字符串用双引号 ( "
) 括起来时,可以使用以下转义序列 。
\n 换行符 0x0A
\r 回车 0x0D
\t 水平制表符 0x09
\v 垂直制表符 0x0B
\e 转义 0x1B
\f 换页 0x0C
\\ 反斜杠 (\)
\$ 美元符号 ($)
\“ 双引号
例如,如果你想在字符串中表示一个换行符,加上[\n]
. 另外,如果要在要在双引号包围的字符串,表示有特殊含义的字符,例如,[“] 或者[$
],那么您就因该就这样写 :【\"】 或 【 \$
】
echo "你好\n能给大家上课,很高兴";
echo "价格是\$100,很合理";
请注意【\n】
や【\$】
etc.仅当字符串用双括号【"】
括起来的时候才有意义。如果一个字符串是用单括号【’】括起来的,即使写成 ,它也会被当作一个字符来处理 。
echo '你好\n能给大家上课,很高兴';
在上面的例子中,“你好\n能给大家上课,很高兴”是没有换行的原样输出。
即使在网页上输出换行符也不打印换行符时
您可以使用转义序列在字符串中输出换行符 (【\n
】,但例如在 HTML 页面中的 <p> 标记内输出换行符不会导致换行符 . <br>
这是因为您需要使用标记 来在 HTML 页面中换行。
<p>
<?php
echo "你好\n能给大家上课,很高兴";
?>
</p>
在上面的例子中,“你好能给大家上课,很高兴”将被输出。
如果要在 <p> 标记内换行,请将标记<br>
放在字符串内 。
<p>
<?php
echo "你好<br>能给大家上课,很高兴";
?>
</p>
或者使用 <pre> 标签代替 <p> 标签。\n
换行符出现 在 <pre> 标记内。
<pre>
<?php
echo "你好\n能给大家上课,很高兴";
?>
</pre>
示例代码
让我们用一个简单的程序来试试吧
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>PHP TEST</title>
</head>
<body>
<p>
<?php
echo "我的家乡是\"青岛市\"市南区<br>";
echo '我的家乡是\'胶东半岛\'的青岛';
?>
</p>
<pre>
<?php
echo "您好\n认识您很高兴";
?>
</pre>
</body>
</html>
我将其保存在网络服务器的文档根目录中,文件名为sample.php
,然后从您的浏览器访问它。
扩展字符串中的变量
在用字符串描述变量并进行展开时,将变量名用大括号括起来{
$变量名}
。
{$变量名}
当字符串用双引号 ("
) 括起来或使用 heredocs 时, 会执行变量扩展。
请参见以下示例。
$name = "Yuhua";
echo "我的名字是{$name}";
字符串“Yuhua””被分配给变量 $name。并且echo
{$name} 写在作为参数指定的字符串中。在这种情况下,显示“我的名字是Yuhua”,而不是执行程序时分配给变量的字符串
如果变量后面有空格,或者写的变量没有大括号,也可以扩展变量。显示Warning,因为无法区分,所以我们推荐使用大括号进行变量扩展,防止出现意外错误。
〇 echo "我的名字是$name ,出生在青岛";
× echo "我的名字是$name,出生在青岛";
请注意,如果变量写在 用单引号 ( ‘ ) 括起来的字符串中,它们也不会被展开。请参见以下示例。
$name = "于华";
echo '我的名字是{$name},出生在青岛';
在上面的例子中,“我的名字是{$name}”,不被识别为变量,也就不能扩展,显示出来了。
示例代码
让我们用一个简单的程序来试试吧。
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>PHP TEST</title>
</head>
<body>
<p>
<?php
$name = "于华";
echo "我的名字是{$name},出生在青岛<br>";
echo '我的名字是{$name},出生在青岛';
?>
</p>
</body>
</html>
使用 Heredocs 创建字符串文字
您还可以使用 heredocs 创建字符串。要编写此处文档,请在<<<
后写入一个描述任意字符串的 ID,然后插入一个新行。最后,写入您之前编写的相同 ID 字符串
<<<ID
字符串1
字符串2
字符串3
ID
注意:ID必须是字符串或者字母数字的组合,不能以数字开头。
echo <<<LABEL
您好。
认识您很高兴。
LABEL;
使用值 DOC 将如下所示:
echo <<<DOC
您好。
认识您很高兴。
DOC;
编写跨越多行的字符串时通常用echo
,但请注意输出此字符串,例如
echo <<<END
I'm a student.
I go to "university" by train.
END;
双引号["]
以外的转义序列都是有效的,所以如果你想写字符[\n]
,你需要把它们写成 转义[\\n]
但是,如果指定为 ID 的字符串出现在 Heredocs 文档字符串中,则会发生错误,因此不要将字符串中使用的字符串用作 ID。
转义序列和变量扩展
<pre>
<?php
$name = "青岛";
echo <<<LABEL
你好,\n我出生在{$name}市。
LABEL;
?>
</pre>
在带有转义序列的换行符之后执行变量扩展。在这种情况下,它看起来像这样:
你好,
我出生在青岛市。
使用 Nowdoc
ID 部分用 单引号 ('
) 括起来的 Heredocs 称为Nowdoc
. (附上的 ID不加单引号)
<<<'ID'
文字列1
文字列2
文字列3
ID
使用Nowdoc 创建一个字符串,它将被视为用单引号 ('
) 括起来的字符串。所以没有转义序列或变量扩展完成。
请参见以下示例。
<pre>
<?php
$name = "青岛";
echo <<<'LABEL'
您好。\n私出生在{$name}市。
LABEL;
?>
</pre>
没有转义序列或变量扩展完成,所以你会看到:
您好。\n我出生在{$name}市。
关于使用结束 ID 的缩进
here-document的结束ID一般写在行首,但如果结束ID用空格或制表符缩进,结束ID的位置就成为整个here-document的起始位置。
<pre>
<?php
echo <<<LABEL
您好。
我出生在青岛市。
LABEL;
?>
</pre>
这显示为:
您好。
我出生在青岛市。
现在在终止 ID 前添加 4 个空格。
<pre>
<?php
echo <<<LABEL
您好。
我出生在青岛市。
LABEL;
?>
</pre>
结束 id 的位置被视为 here 文档的开始,因此它看起来像这样:
您好。
我出生在青岛市。
通过像这样在終端id 前面添加一个空格或制表符,您可以为整个here-document 设置缩进。如果字符串显示在结束 ID 位置之前,将发生错误。
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>PHP TEST</title>
</head>
<body>
<pre>
<?php
echo <<<LABEL
您好。
我出生在青岛市。
认识您很高兴
LABEL;
?>
</pre>
</body>
</html>
将其保存在网络服务器的文档根目录中,文件名为 sample.php
. 然后从浏览器访问它。