PHP在字符串中慎用$

今天在测试文本过滤特殊字符的时候发现了PHP中一个奇怪的现象

下面直接用代码测试

<?php
$text = "这是$一段文本";
echo $text.PHP_EOL;
?>

//输出
这是

我们发现$后面的内容没有了

<?php
$text = "这是$一段&文本";
echo $text.PHP_EOL;
?>

//输出
这是&文本

我们加一个特殊符号&,发现$和&中间的文字没有了

下面我们再看一个例子

<?php
$text = '这是$一段&文本';
echo $text.PHP_EOL;
?>

//输出
这是$一段&文本

现在内容原样输出了

刚开始我们可能比较迷惑,其实稍微思索一下就知道了,是因为PHP中双引号""是可以解析变量的,而$又正好是变量定义的符号,所以在双引号中使用$就会被解析成变量,而PHP中对于变量名又没有不能使用文字的要求,只是找不到这个变量而已,又因为PHP是弱类型,变量找不到就找不到了,也不会报错,所以就发生了最开始会少一段文字的现象。

我们看到文本中加了&之后,&之后的内容会被展示,这是因为&不能被用于定义变量,所以PHP解析变量的时候就到&就结束了,所以&后面的文字就正常解析成文字输出了。

顺便我们在来复习下PHP的变量规则

PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。

变量名与 PHP 中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。 按照正常的正则表达式,它将被表述为:'^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$'。

PHP官方文档的描述:PHP: 基础 – Manual

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇