php数据类型之字符串

字符串就是所有我们可见和不可见的字符,就是我们日常当中说的话,就是我想说:“小明好帅”或者“凤姐,我爱你!”。字符串,就是我想表达的一切让人看到的字符。

例如可以看到的字符:

我愿变成童话你,你爱的那个王子,有房有车有票子。 <html><title></title></html> ^@@@#@ my name is xiaoshenyang

以上可以见到的文字,HTML标签、特殊字符和英文等等,我们都认为是字符串。

注:不可见字符暂时不讲解,因为,文本中无法表现,下面的实验中逐渐注意即可。为了有更清晰的表现,也可以观看本书配套的PHP学院出品关于字符串的视频。

在PHP语言中声明字符串有三种方式:

    1.用单引号声明

    2.用双引号声明

    3.用字界符声明(需要输入非常大段的字符串时使用)

1.单引号声明 

用英文半脚的单引号,将字符串包起来

<?php
//声明字符串变量$zhifu

$zhifu = '曾经有操蛋的爱情摆在我面前,我珍惜了。当我得到的时候才感到后悔莫及。如果非要在这段爱情前面加上一段三个字,我愿意说三个字:滚犊子';

//你可以放XAMPP指定的目录下,新建一个文件叫str.php。然后访问一下http://127.0.0.1/str.php试试。会不会显示这句话。

echo $zhifu;

?>

2.双引号声明字符串
在字符串两边加双引号。

<?php
//声明字符串变量$str
$str = "如果非要在滚犊子前面加上一个时间的话我愿意是马上。";

echo $str;
?>

3.字界符声明
1).在变量后面的等号写三个小于号(<<<)。
2).然后在<<<后面写上字符(建议英文大写字符)。如下例中的:ABC
3).然后换行写上任意想写的字符
4).写完后,顶行。在行最开始处,再写上<<<后面的字符和分号。如下例中的:ABC;

<?php

$dingjie = <<<ABC
  如果
       非要在这个滚犊子
   前
       面<br />
      加上一段
   <i>距离的话</i>
   我想说:<h1>思想有多远,你就跟我滚多远</h1>
ABC;
?>

那双引号和单引号有什么区别呢?

【重要知识点】PHP面试题中,高概率面试题(建议背诵并实验三遍以上)

    1.双引号解析变量,但是单引号不解析变量。

    2.在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变          量后面接上特殊字符,例如空格等分开。

    3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。

    4.双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\

    5.单引号效率高于双引号,尽可能使用单引号

    6.双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。

    7.神奇的字符串拼接胶水——(.)点,用来拼接字符串。

    8.我们将定界符声明字符串视为双引号一样的功能来看待。

实验举例

1.双引号解析变量,但是单引号不解析变量

<?php
//声明变量$shouji
$shouji = '为了苹果手机去卖肾';
//在双引号中放$shouji 然后echo 一下是什么效果呢?
$str = "$shouji 会不会显示呢?";
//输入$str试试
echo $str;
?>

在浏览器中打开,运行的结果如下:

QQ截图20161114092822.png

通过上边的例子,我们发现。双引号中间的变量够执行显示,我们将$str这个字符串两边的双引号,改为单引号试试,再看一次执行结果:

QQ截图20161114093040.png

发现$shouji 直接显示出来了,而不是双引号的显示结果。

通过上例,我们证明了:双引号执行变量,而单引号不执行变量。我们得到一个重要结论:

双引号需要解析变量,因此双引号的效率没有单引号高。我们如果为了更高的效率,我们通常使用单引号。

2. 在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。可以在后面接上特殊字符,例如空格等分开。

<?php
$php = 'php中文网';

$str = "$phpaaaa";
//你会发现输出$str,什么都没有在页面中显示
echo $str;
?>

但是,我们在$str 声明的这个字符串中将$huaqiangu 后面接个空格再接aaaa,代码如下:

<?php
$php = 'php中文网';
//中间加了空格哟
$str = "$php aaaa";

echo $str;
?>

大家发现执行显示的结果不再是空白页面,而是这个页面中有内容了。如下:

QQ截图20161114093257.png

我们把代码再改改:

<?php
$php = 'php中文网';
//中间加了空格哟
$str = "$php!aaaa";

echo $str;
?>

大家打开一次页面,执行了一次代码看看结果是不是变为了:

php中文网!aaaa

因此,证明了我们的第二项观点。

3. 如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。

那,如果我不想在后面有空格有,有特殊符号,就想直接显示变量$huaqiangu呢?——我们的解决办法是用大括号把变量包起来。代码如下:

<?php
$php = 'php中文网';
//中间加了空格哟
$str = "{$php}aaaa";

echo $str;
?>

于是,大家会发现花千骨后面没有了特殊符号,也没有空格了,达到了我们想要的显示结果,演示效果如下:

QQ截图20161114093552.png

4. 双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\

第4个字符串的注意事项比较难以观察,转义字符有一些,但最常用的有:
\n 回车
\t 缩进

我们来通过实验先来理解\n和\t是什么。

<?php
//声明一个字符串,记住是双引号
$string = "每天来PHP中文网\n给梦想\t一个机会";
echo $string;
?>

做这一块的实验中有一个注意事项,显示网页是看不出来效果的,如下:

QQ截图20161114093510.png

为什么看不出来\n和\t代表什么含义,也看不出来双引号解析了\n和\t呢?——因为,你没有点击鼠标右键查看源代码。我们来点击一下,再看看效果。

第一步:显示网页源代码

第二步:查看HTML源代码显示的结果:

大家来对比字符串变量:

$string = "每天来PHP中文网\n给梦想\t一个机会";

\n在PHP学院的后面,在源代码里显示的结果是跟按了回车键一样的效果。
\t在给梦想和一个机会中间。显示的结果是有几个空格的效果。\t相当于我们在电脑上按了一个tab键效果。

但是,我们同样执行一下上面的代码,但是$string双引号改为用单引号:

<?php
//声明一个字符串,记住是双引号
$string = '每天来PHP中文网\n给梦想\t一个机会';
echo $string;
?>

执行次看看效果:

QQ截图20161114093821.png

你会发现——单引号中间的\t和\n直接显示出来了,而没有变成按一次回车键和按一次tab键后的效果。
因此:

双引号执行转义字符而单引号不执行转义字符。

5. 转义字符\(反斜线的使用)

如果我们声明一个变量$beizi,我们想要在$beizi声明的双引号中间加上一个双引号显示输出怎么办?

<?php

//要在$beizi的字符串中显示一个双引号怎么办?
$beizi = "多于绝大多数的人出生就是杯具,但是"我们在不断的让人生变为喜剧";

echo $beizi;
?>

如果真如上述所写代码,代码会报错。报错结果如下:

因为字符串:“多于绝大多数的人出生就是杯具,但是"我们在不断的让人生变为喜剧”必须写在双引号中间。而双引号中间还有一个双引号。也就是意味着字符串声明提前结束了,在“但是”处结束了。后面"我们在不断的让人生变为喜剧",电脑不认识。

这真是一个杯具!那么办?

答:我们需要将双引号原有的意义去掉。再双引号前面加上一个\(反斜线,计算机的专业名词叫转义字符),就可以了。

<?php

//要在$beizi的字符串中显示一个双引号怎么办?
$beizi = "多于绝大多数的人出生就是杯具,但是\"我们在不断的让人生变为喜剧";

echo $beizi;
?>

你可以再执行一下上面的代码,发现不再报错了。同理可推,单引号当中要插入一个单引号显示出来的时候,也可以在单引号声明的字符串中的单引号前面加上(反斜线,转义字符),将单引号的意义(限定字符区间)去掉。

<?php

//要在$beizi的字符串中显示一个双引号怎么办?
$shengyang = 'i\'m xiaoshengyang';

echo  $shengyang;
?>

6. 双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。

代码如下:

<?php

$legend = '猛虎';

$NoAlike = "心有'$legend',细嗅蔷薇";

echo $NoAlike;

?>

执行结果如下:

QQ截图20161114093923.png

7. 神奇的字符串拼接胶水——(.)点,用来拼接字符串。

<?php
$php = 'PHP中文网';
//中间加了空格哟
$str = "{$php}aaaa";

echo $str;
?>

上面这段代码是,我们曾经说过双引号能够解析变量,有一个问题:

效率没有纯单引号的高

那么问题1:我想改为效率最高的方式应该怎么办?

问题2:我有多个字符串,要拼接在一声怎么办?

那,我们需要使用到神奇的胶水:(.)点,用来拼接字符串。

<?php

$shixi = '大学4年要好好学习<br />';

$buran = '不然连实习的机会都没有<br />';

$mimang = '把别人用来迷茫的时间拿到PHP中文网<br />';

$xuexi = '学习PHP<br />';

//我们可以把字符串全部拼接起来。
echo $shixi . $buran . $mimang . $xuexi;

?>
因此,刚刚的问题一的代码我们可以改为:
<?php
$php = 'PHP中文网';
//中间加了空格哟
$str = $php . 'aaaa';

echo $str;
?>

8. 我们将定界符声明字符串视为双引号一样的功能来看待。

<?php

$weilai = '努力才有未来';
$mimang = '迷茫的原因是没有目标';

$dingjie = <<<ABC
  如果
           $weilai
       非要\t在这"个滚"犊子
   前
           '$mimang'
       面<br />
      加上\n一段
   <i>距离的话</i>
   我想说:<h1>思想有多远,你就跟我滚多远</h1>
ABC;

echo $dingjie;
?>

你可以执行发现$weilai,$mimang,\t\n都可以执行,双引号单引号都能显示。这就是定界符的特点。

再声明一次:字符串的声明每一项都必须记住,非常常用。并且面试题出现的概率非常高!


不可见字符:主要是计算机规定的一些特殊符号。例如:回车(\n)、缩进(\t)等。

双引号执行变量,所以


继续学习
||
<?php //声明字符串变量$zhifu $zhifu = '曾经有操蛋的爱情摆在我面前,我珍惜了。当我得到的时候才感到后悔莫及。如果非要在这段爱情前面加上一段三个字,我愿意说三个字:滚犊子'; //你可以放XAMPP指定的目录下,新建一个文件叫str.php。然后访问一下http://127.0.0.1/str.php试试。会不会显示这句话。 echo $zhifu; ?>
提交重置代码
章节
笔记
提问
课件
反馈
捐赠

php入门教程之一周学会PHP

高并发千万级数据库系统解决方案
  • 推荐课程
  • 评论
  • 问答
  • 笔记
  • 课件下载
phpcn_u517

phpcn_u517

3.字界符声明 1).在变量后面的等号写三个小于号(<<<)。 2).然后在<<<后面写上字符(建议英文大写字符)。如下例中的:ABC 3).然后换行写上任意想写的字符 4).写完后,顶行。在行最开始处,再写上<<<后面的字符和分号。如下例中的:ABC; 好像都没看懂的样子<a href="www.cqjdzxx.cn&qu

5年前    添加回复 10

回复
phpcn_u13623

phpcn_u13623

作者是南方人的可能性大,普通话不标准!

4年前    添加回复 4

回复
恩恩

恩恩

<?php $dingjie = <<<ABC 如果 非要在这个滚犊子 前 面<br /> 加上一段 <i>距离的话</i> 我想说:<h1>思想有多远,你就跟我滚多远</h1> ABC; echo $dingjie; ?>

5年前    添加回复 4

回复
 o

o

如果中文出现乱码,请在 <?php //里面添加一段编码设置 header("Content-type: text/html; charset=utf-8"); ?> 然后输出就是正常的文字了

5年前    添加回复 2

回复
小队长

小队长

3.字界符申明 运行没有结果啊????

5年前    添加回复 2

回复
phpcn_u820

phpcn_u820

*.*.

5年前    添加回复 2

回复
不愿

不愿

好吧自己加了 echo $dingjie 后可以运行了。

1年前    添加回复 1

回复
不愿

不愿

3.字界符声明 不会显示

1年前    添加回复 1

回复
Eric

Eric

为啥打代码的时候老是出错啊

3年前    添加回复 1

大空想家

大小写吧

大空想家 · 2018-09-04 14:55
回复
Aの汉

Aの汉

感觉定界符很实用

4年前    添加回复 1

回复
Aの汉

Aの汉

还真在查看源代码里看到效果了,哈哈

4年前    添加回复 1

回复
Aの汉

Aの汉

看到花千骨了

4年前    添加回复 1

回复
爷

5 没看懂,写的有错误么?

1年前    添加回复 0

回复
爪X8

爪X8

5. 转义字符 使用的举例有点小瑕疵 最后显示输出的内容漏了个单引号,因此,在“喜剧”后面,应该添加\" 但是\"我们在不断的让人生变为喜剧"\";

3年前    添加回复 0

回复
小鲈鱼

小鲈鱼

是“zifu”不是“zhifu”哈哈哈

3年前    添加回复 0

回复

单双引号解析转义字符问题

[最新 autoload 的回答]谁告诉你,单引号不解析转移字符的?在单引号定义的字符串中能转义单引号和转义符本身

时间:1个月前

echo 后面如果不加任何引号,也可以显示文字信息,为什么必须要加单引号呢?有啥区别吗?

[最新 Smallink 的回答]双引号支持转义 变量输出 HTML标签输出,例: $str = "如果非要在***前面加上一个时间的话我愿意是马上。"; echo $str;

时间:2年前

字符界声明

[最新 移动用户-5801868 的回答]后面会讲到

时间:3年前

为什么总是错误404?

[最新 帅气的牛先生 的回答]已经弄好了,感谢大哥

时间:3年前

乱码怎么解决

[最新 韦小宝 的回答]在头部加个header("Content-Type: text/html;charset=utf-8");

时间:3年前

求解 为啥报错了

[最新 好想睡懒觉、 的回答]前两行用了中文标点

时间:3年前

不明白XAMPP指定的目录是个什么目录?

[最新 亚连 的回答]目录不都是从根目录开始找吗?

时间:4年前

写的代码,所有中文在WEB都显示乱码

[最新 钟毅 的回答]记得要所有的页面改完,要不然就专门INCULDE来包含utf8这句。没改完当然就不显示中文,只显示GBK的文字。

时间:4年前

单引号可以解析\'和\

[最新 Ty80 的回答]贴下代码呀亲,你这么说也看不出来出什么问题了。

时间:4年前

P粉108091802

P粉108091802

下一行为:

2星期前 0

吴菠

吴菠

后期验证变量赋值在双引号中 \n给梦想\t 在源代码中解析后的效果

2个月前 0

P粉150142745

P粉150142745

双引号和单引号有什么区别呢? 【重要知识点】PHP面试题中,高概率面试题(建议背诵并实验三遍以上) 1.双引号解析变量,但是单引号不解析变量。 2.在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变 量后面接上特殊字符,例如空格等分开。 3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。 4.双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\ 5.单引号效率高于双引号,尽可能使用单引号 6.双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。 7.神奇的字符串拼接胶水——(.)点,用来拼接字符串。 8.我们将定界符声明字符串视为双引号一样的功能来看待。

4个月前 0

zy

zy

在PHP语言中声明字符串有三种方式: 1.用单引号声明 2.用双引号声明 3.用字界符声明(需要输入非常大段的字符串时使用)

5个月前 0

zy

zy

1.双引号解析变量,但是单引号不解析变量。 2.在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变 量后面接上特殊字符,例如空格等分开。 3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。 4.双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\ 5.单引号效率高于双引号,尽可能使用单引号 6.双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。 7.神奇的字符串拼接胶水——(.)点,用来拼接字符串。 8.我们将定界符声明字符串视为双引号一样的功能来看待

5个月前 0

倾心つ

倾心つ

php--单引号不解析变量----双引号会解析变量----但是插入变量是要空格

6个月前 0

老白

老白

那双引号和单引号有什么区别呢? 【重要知识点】PHP面试题中,高概率面试题(建议背诵并实验三遍以上) 1.双引号解析变量,但是单引号不解析变量。 2.在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变 量后面接上特殊字符,例如空格等分开。 3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。 4.双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\ 5.单引号效率高于双引号,尽可能使用单引号 6.双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。 7.神奇的字符串拼接胶水——(.)点,用来拼接字符串。 8.我们将定界符声明字符串视为双引号一样的功能来看待。

6个月前 0

哟呵

哟呵

7个月前 0

梦醉清风

梦醉清风

1.双引号解析变量,但是单引号不解析变量。 2.在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变 量后面接上特殊字符,例如空格等分开。 3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。 4.双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\ 5.单引号效率高于双引号,尽可能使用单引号 6.双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。 7.神奇的字符串拼接胶水——(.)点,用来拼接字符串。 8.我们将定界符声明字符串视为双引号一样的功能来看待。

9个月前 0

梦醉清风

梦醉清风

.用单引号声明 2.用双引号声明 3.用字界符声明(需要输入非常大段的字符串时使用)

9个月前 0

大大

大大

重要知识点】PHP面试题中,高概率面试题(建议背诵并实验三遍以上) 1.双引号解析变量,但是单引号不解析变量。 2.在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变 量后面接上特殊字符,例如空格等分开。 3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。 4.双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\ 5.单引号效率高于双引号,尽可能使用单引号 6.双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。 7.神奇的字符串拼接胶水——(.)点,用来拼接字符串。 8.我们将定界符声明字符串视为双引号一样的功能来看待。

10个月前 0

手机用户1615251809

手机用户1615251809

【重要知识点】PHP面试题中,高概率面试题(建议背诵并实验三遍以上) 1.双引号解析变量,但是单引号不解析变量。 2.在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变 量后面接上特殊字符,例如空格等分开。 3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。 4.双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\ 5.单引号效率高于双引号,尽可能使用单引号 6.双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。 7.神奇的字符串拼接胶水——(.)点,用来拼接字符串。 8.我们将定界符声明字符串视为双引号一样的功能来看待。

1年前 0

str.

str.

1.双引号解析变量,但是单引号不解析变量。 2.在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变 量后面接上特殊字符,例如空格等分开。 3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。 4.双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\ 5.单引号效率高于双引号,尽可能使用单引号 6.双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。 7.神奇的字符串拼接胶水——(.)点,用来拼接字符串。 8.我们将定界符声明字符串视为双引号一样的功能来看待

1年前 0

秋闲独醉

秋闲独醉

那双引号和单引号有什么区别呢? 【重要知识点】PHP面试题中,高概率面试题(建议背诵并实验三遍以上) 1.双引号解析变量,但是单引号不解析变量。 2.在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变 量后面接上特殊字符,例如空格等分开。 3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。 4.双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\ 5.单引号效率高于双引号,尽可能使用单引号 6.双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。 7.神奇的字符串拼接胶水——(.)点,用来拼接字符串。 8.我们将定界符声明字符串视为双引号一样的功能来看待。

1年前 0

3DVR全景-邵先生***

3DVR全景-邵先生***

1、单引号申明 2、双引号申明 3、字界符申明

1年前 0

课件暂不提供下载,工作人员正在整理中,后期请多关注该课程~