2.2PHP标量类型之字符串(String)

1.单引号字符串

'string'

单引号字符串只支持转义反斜线(\)和单引号('),不支持其余转义。

单引号字符串不支持变量解析。

单引号字符串支持跨多行编写一行代码。

echo 'You can also have embedded newlines in
strings this way as it is
okay to do';

//输出
You can also have embedded newlines in
strings this way as it is
okay to do

2.双引号字符串

"string"

双引号字符串不仅支持转义反斜线(\)和双引号("),还支持其余转义。

双引号字符串支持变量解析。

双引号字符串支持跨多行编写一行代码。

echo "You can also have embedded newlines in
strings this way as it is
okay to do";

//输出
You can also have embedded newlines in
strings this way as it is
okay to do
转义序列描述
\n换行(ASCII 字符集中的 LF 或 0x0A (10))
\r回车(ASCII 字符集中的 CR 或 0x0D (13))
\t水平制表符(ASCII 字符集中的 HT 或 0x09 (9))
\v垂直制表符(ASCII 字符集中的 VT 或 0x0B (11))
\eEscape(ASCII 字符集中的 ESC 或 0x1B (27))
\f换页(ASCII 字符集中的 FF 或 0x0C (12))
\\反斜线
\$美元标记
\"双引号
\[0-7]{1,3}匹配该正则表达式的字符序列的是一个以八进制方式来表达的字符,它会无声地溢出以适合一个字节 (例如:”\400″ === “\000”)
\x[0-9A-Fa-f]{1,2}匹配该正则表达式的字符序列的是一个以十六进制方式来表达的字符。
\u{[0-9A-Fa-f]+}匹配该正则表达式的字符序列是 Unicode 码位, 该码位能作为 UTF-8 的表达方式输出字符串。

3.变量解析

如果双引号字符串的双引号("")内含有变量,则其中的变量将会被解析。

简单语法和复杂语法都支持在双引号内解析 变量的值、字符串内的字符、数组元素的值、对象实例属性的值。

3.1简单语法

PHP 解析器一旦遇到美元符号 $,就会尽可能地组织美元符号 $ 后的合法字符以形成变量名。

"$变量名"

//当想要明确地定出变量名的界线时,可额外使用花括号{}。
//注意:花括号内为变量名,不支持返回值为字符串类型的表达式。
"${变量名}"
//解析变量的值
$juice = "apple";

echo "He drank some $juice juice.";

//s是合法的标识符,所以最终变量名会被解析为juices导致解析不到值。
echo "He drank some juice made of $juices.";

echo "He drank some juice made of ${juice}s.";

//输出
He drank some apple juice.
He drank some juice made of .
He drank some juice made of apples.
//解析字符串内的字符
$string = 'string';
echo "The character at index -2 is $string[-2].";
$string[-3] = 'o';
echo "Changing the character at index -3 to o gives $string.";

//输出
The character at index -2 is n.
Changing the character at index -3 to o gives strong.
//解析数组元素的值
$juices = array("apple", "orange", "koolaid1" => "purple");

echo "He drank some $juices[0] juice.";

//注意:数组的键不可以使用引号。
echo "He drank some $juices[koolaid1] juice.";

//输出
He drank some apple juice.
He drank some purple juice.
//解析对象实例属性的值
class people {
    public $john = "John Smith";
    public $jane = "Jane Smith";
    public $robert = "Robert Paulsen";

    public $smith = "Smith";
}

$people = new people();

echo "$people->john said hello to $people->jane.";

//单引号'不是合法的标识符,所以最终实例属性名会被解析为john而不是john's。
echo "$people->john's wife greeted $people->robert.";

//s是合法的标识符,所以最终实例属性名会被解析为smiths导致解析不到值。
echo "$people->robert greeted the two $people->smiths.";

//输出
John Smith said hello to Jane Smith.
John Smith's wife greeted Robert Paulsen.
Robert Paulsen greeted the two .

3.2复杂(花括号)语法

复杂语法的编写规则为:双引号内的变量的语法就跟正常变量的语法相同,然后用 { } 包裹包含到双引号内。美元符号 $ 必须紧挨着左花括号 { 后才会被识别为复杂语法,否则会被识别为简单语法。

"{$变量名}"

//此示例仅为可变变量名示例。
//如果想要支持可变变量名、可变函数名、可变类名语法,无需特殊语法,仅需在对应的可变语法外围用 { 和 } 包裹包含到双引号内即可。
"{${表达式}}"
"{${$变量名}}"
"{$$变量名}"
//解析变量的值
$name = "a";

echo "{$name}";

//美元符号没有紧挨着左花括号后导致无法被识别为复杂语法,而被识别为简单语法。
echo "{ $name}";

//输出
a
{ a}
//解析字符串内的字符
$string = 'string';
echo "The character at index -2 is {$string[-2]}.";
$string[-3] = 'o';
echo "Changing the character at index -3 to o gives {$string}.";

//输出
The character at index -2 is n.
Changing the character at index -3 to o gives strong.
//解析数组元素的值
echo "This works: {$arr[4][3]}";

//注意:数组的键必须使用引号。
echo "This works: {$arr['key']}";

echo "This works: {$arr['foo'][3]}";
//解析对象实例属性的值
class foo {
    public $bar = 'I am bar.';
}

$foo = new foo();

echo "{$foo->bar}";

//输出
I am bar.

4.访问字符串中的字符

可以把字符串当成由字符组成的数组,所以可以使用类似数组中变量名后跟方括号包含对应的索引来访问和更改字符串中的字符。

索引必须为整数或可转换为整数的字符串,否则会抛出警告。

//正数索引从左往右从0开始,负数索引从右往左从-1开始。
$str = 'string';

//查询
$first = $str[0];

//更改
$str[-3] = 'o';

5.字符串长度

strlen(string $string): int
$str = 'abcdef';
echo strlen($str); // 6

$str = ' ab cd ';
echo strlen($str); // 7

6.字符串连接

字符串可以使用 .(点) 来连接,这个点被称为 字符串连接运算符。

echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . "\n";

//输出
This string was made with concatenation.

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/php/phplang/28887.html

(0)
上一篇 2023年7月1日
下一篇 2023年7月3日

相关推荐

  • 1.6PHP语言的变量(Variable)

    1.变量声明 2.变量分类 2.1全局变量 名称 修饰符 全局变量 —————— 2.2成员变量 名称 修饰符 静态属性(类) static 实例属性(类) 至少有一个修饰符 2.3局部变量 名称 修饰符 静态变量(函数内) static 局部变量 —————— 值形参 —————— 默认值形参 —————— 引用形参…

    PHP语言教程 2023年6月6日
    0520
  • 2.11PHP语言的可见性(Visibility)

    PHP 语言的可见性支持 public 、protected 、private 修饰符。 可见形修饰符支持 静态属性、实例属性、常量、静态方法、实例方法、构造函数、析构函数 等成员。 没有声明可见性修饰符的成员是隐式的 public。 声明为 public 的成员可以在任何地方访问。声明为…

    PHP语言教程 2023年7月11日
    0300
  • 1.8PHP语言的函数(Function)

    1.函数声明 2.函数分类 2.1全局函数 名称 修饰符 全局函数 —————— 2.2成员方法 名称 修饰符 静态方法(类) static 实例方法(类) —————— 2.3局部函数 名称 修饰符 嵌套函数 —————— 3.可变(Variable)函数名 函数、静态方法、实例方法的名称可以通过返回值为字符串类型的…

    PHP语言教程 2023年6月8日
    0410

发表回复

登录后才能评论