php基础——字符串

在底层,字符串是以字符数组的形式保存的

$a = '123';
echo $a[0];       // 1
echo strlen($a);  // 3

字符串简介

基本概念

  • 一个字符串就是由一系列的字符组成,其中每个字符等同于一个字节
  • 字符串最大可以达到 2GB
  • 一个字符串可以用 4 种方式表达

代码示例

echo $a = 'abc';
echo $b = '123';
echo $c = '哈哈哈';

echo $d;    // Notice: Undefined variable: d
echo "d";   // d

字符串表达方式

一个字符串可以用 4 种方式表达:

  • 单引号
  • 双引号
  • heredoc 语法结构(类似于双引号)
  • nowdoc 语法结构(类似于单引号)

heredoc与Nowdoc LINK

  • <<<运算符之后加标识符HTMLCON(自定义),标识符大写,最后用该标识符结束
  • 标识符不加''就是heredoc,标识符加''就是nowdoc
  • heredoc和nowdoc一般用于返回大段html代码
  • heredoc类似于双引号,nowdoc类似于单引号
$info = array('name'=>'张三','age'=>18);
$str = <<<HTMLCON
<h1>hello word~{$info['name']}</h1>  
HTMLCON;

echo $str;

转义字符

反斜杠是一个转义字符。 转义字符将特殊字符转换为字符串字符

单引号

  • 要表达一个单引号自身,需在它的前面加个反斜线\'来转义
  • 要表达一个反斜线自身,则用两个反斜线\\
// 想要打印单引号
$str1 = '\'';
echo $str1,'<br>';  // '

// 想要打印反斜杠
$str1 = '\\';
echo $str1,'<br>';  // \

双引号

双引号会对以下特殊的字符进行解析(常用)

  • \" 表示 " 双引号
  • \' 表示 ' 单引号
  • \\ 表示\
  • \r 表示回车
  • \n 表示换行。n 的意思是 newline。
  • \t 表示缩进。t 的意思是 tab。
// 想要打印双引号
$str1 = "\"";
echo $str1,"<br>";  // "

// 想要打印\
$str1 = "\\";
echo $str1,"<br>";  // \

// 想要打印\n
$str1 = "\\n";
echo $str1,"<br>";  // \n

变量解析

基本用法

  • 双引号和heredoc能解析变量
  • 单引号和nowdoc不能解析变量
  • 双引号解析变量时,如果变量有特殊字符或者是数组,则需要{}括起来
  • 双引号解析变量时,如果变量后面有(),则认为调用函数

变量解析示例

$age = 18;
$str1 = "我今年 $age 岁";
$str2 = '我今年 $age 岁';

echo $str1,"<br>";      // 我今年 18 岁
echo $str2,"<br>";      // 我今年 $age 岁

$info = array('name'=>'张三','age'=>18);
$str = "我今年 {$info['age']} 岁";
echo $str;

字符串中调用函数(函数解析)

function test(){
    return 'hello';
}
$fun_name = 'test';

echo "$fun_name";       // 'test'
echo "$fun_name()";     // 'test()'
echo "{test()}";        // '{test()}'
echo "{$fun_name()}";   // 'hello'   此处调用函数

/*
当php去执行一个双引号的内容时,如果它发现有 $变量 的存在
1.首先去找这个 $变量 对应的值 'test'
2.如果$变量后有()且用{}包起来,会认为要调用函数,即 test()  如果没有这个函数 报错
*/

单双引号速度比较

单引号速度快

  • 单引号速度快不需要解析变量,优先使用''
  • 如果返回大段html代码,优先使用heredoc方式
  • 如果需要拼接很多变量的 sql 语句,推荐使用""

字符串拼接(并置运算符)

字符串拼接用. 不仅可以拼接字符串,还可以把整形转换成字符串并拼接在一起

$a = "hello";
$b = "world";
$c = $a.$b;
echo $c;	// helloworld

$d = 111;
$e = $d.$c;
echo $e;	// 111helloworld

. 和 ,在打印时运行速度的比较

echo "hello"."world";   // 先进性字符串拼接运算 然乎再打印  比较慢
echo "hello","world";   // 相当于直接打印两次  快一些

查字符串长度函数

  • strlen() 返回字符串的长度
// strlen 按照字节来计
$str1 = "hello";
$str2 = "he llo";
$str3 = "中国";
echo strlen($str1),"<br>";   // 5
echo strlen($str2),"<br>";   // 6
echo strlen($str3),"<br>";   // 6  utf-8编码,1个中文占3个字节

查找字符位置函数

  • strpos() 返回字符串在另一字符串中第一次出现的位置(大小写敏感)
  • stripos() 返回字符串在另一字符串中第一次出现的位置(大小写不敏感)
  • strripos() 查找字符串在另一字符串中最后一次出现的位置(大小写不敏感)。
  • strrpos() 查找字符串在另一字符串中最后一次出现的位置(大小写敏感)。
$str = "hello";
echo strpos($str, "h"); // 0
// 查找 "php" 在字符串中第一次出现的位置:
echo strpos("I love php, I love php too!","php");	// 7

字符串替换函数

  • str_replace() 替换字符串中的一些字符(大小写敏感)
  • str_ireplace() 替换字符串中的一些字符(大小写不敏感)
$str = "hi,fuck,fucker";
echo str_replace("fuck", "f**k", $str); // hi,f**k,f**ker
  • strtr() 替换一批字符串(不同的字符使用不同的替换规则)
  • substr_replace() 把字符串的一部分替换为另一个字符串。
// 替换一批字符串
$str = "男人,女人,男孩,女孩";
echo strtr($str,array("男"=>"女","女"=>"男"));  // 女人,男人,女孩,男孩

提取子字符函数(双字节)

substr() 截取字符串的一部分并返回
如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。

$str = "hello,world";
echo substr($str, 0,5); // 0开始到5(不包括),截5个字节  hello
echo "<br>";
echo substr($str,0,-6); // 0开始到-6(不包括),截5个字节  hello  负数就是从后往前数
echo "<br>";
echo substr($str,-11,-6);   // -11开始到-6(不包括),截5个字节  hello

分割 / 连接字符串函数

  • explode() 函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组。(把字符串分割成数组)

  • implode() 函数返回一个由数组元素组合成的字符串。(把数组连成字符串)

$str = "linux,windows,mac";
$arr = explode(",",$str);     // Array ( [0] => linux [1] => windows [2] => mac )	把字符串分割成数组
echo "<br>";
echo implode($arr,",");         // linux,windows,mac	把数组连成字符串

反转函数

去除 增加空格函数

html代码/数据库安全处理有关函数

比较字符函数

字符大小写转换函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值