详解PHP中的字符串
程序员文章站
2024-03-25 08:30:58
...
文章目录
字符串
单引号与双引号的区别
单引号中的变量不会被解析且格式化字符串不会被转义,而双引号中的变量会被解析,格式化字符串也会被转义:
<meta charset="utf-8">
<?php
$a = 15;
$b = 10;
echo "xxxx\nxxx$a".'<br>';
echo 'xx\nxxxxx$a'.'<br>';
?>
运行结果:
字符串常用的函数
strlen()
输出当前字符串的长度,汉字占3个字符,英文和数字占1个字符:
<meta charset="utf-8">
<?php
$a = "editor.csdn.com";
# 这里输出15
echo strlen($a);
?>
mb_strlen()
输出解码后字符串的长度:
<meta charset="utf-8">
<?php
$a = "editor.csdn.com";
$b = '北京';
echo mb_strlen($a,'utf-8');
echo "<br>";
# 北京经过utf-8解码后是2
echo mb_strlen($b,'utf-8');
?>
strpos()
这个函数用来返回字符串在其当前行数出现的位置:
<meta charset="utf-8">
<?php
$a = "editor.csdn.com";
$b = '北京';
# 这里会输出7
echo strpos($a, 'csdn');
?>
stripos()
它跟上面函数的区别就是区分大小写,它不区分,它上面的区分
<meta charset="utf-8">
<?php
$a = "editor.csdn.com";
$b = '北京';
var_dump(strpos($a, 'Csdn'));
echo '<br>';
var_dump(stripos($a, 'Csdn'));
?>
str_replace()
这个函数在很多代码级的防护上都有出现,效果就是字符串替换,这个函数跟strpos()一样,区分大小写,而str_ireplace()不区分大小写:
<meta charset="utf-8">
<?php
$a = "editor.csdn.com";
$b = '北京';
//将字符串a中的csdn替换成baidu并把结果赋值给c
$c = str_replace('csdn', 'baidu', $a);
echo "$a";
echo '<br>';
echo "$c";
?>
strstr()
这个函数的作用是查找字符串的首次出现 :
<meta charset="utf-8">
<?php
$email = 'aaa@qq.com' ;
$domain = strstr ( $email , '@' );
echo $domain ; // 打印 @example.com
echo "<br>";
// 从 PHP 5.3.0 起,参数true返回条件前的字符串,不包含条件,false返回条件后的字符串,包含条件
$user = strstr ( $email , '@' , true );
echo $user ; // 打印 name
?>
substr()
这个函数的作用是截取字符串,比如我们要截取username这个字符串,他就是从0开始,长度为8的一个条件,我们按照这个条件来截取即可
<meta charset="utf-8">
<?php
$email = 'aaa@qq.com' ;
$str = substr($email,0,8);
echo "$str";
?>
explode()
这个函数类似于Python中的split()函数,按条件分割字符串并以数组的形式保存:
<meta charset="utf-8">
<?php
$website = 'www.qq.com' ;
$array = explode('.',$website);
print_r($array);
?>
implode()
这个函数刚好与explode()对应,它的作用是把数组以某种条件拼接成一串字符串:
<meta charset="utf-8">
<?php
$array = array( 'lastname' , 'email' , 'phone' );
$comma_separated = implode ( "," , $array );
echo $comma_separated ; // lastname,email,phone
echo "<br>";
//使用空数组时为空字符串
var_dump ( implode ( 'hello' , array())); // string(0) ""
?>
trim()
这个函数对应Python中的strip()函数,用于去除字符串头尾的空格或其他你指定的字符:
<?php
$test = '000This is test str000';
$newstr = trim($test,0);
echo "$test";
echo "<br>";
echo "$newstr";
?>
如果想要去除空格的话是不需要加条件的,这个函数本身就是用来去除字符串首尾空格的,对应消除左边字符与右边字符的是rtrim()和ltrim()
addslashes()和htmlspecialchars()
这两个函数放到一起写是因为他俩经常用于防注入和防XSS
来一段代码感受一下:
<?php
$username = "admin'";
echo addslashes($username);
?>
这里会把admin后面的单引号转义掉:
再看一下htmlspecialchars()函数
主要看下面那5条,这是他的过滤规则,我们来一个代码测试一下:
<?php
$search = "<script>alert('xss')</script>";
echo htmlspecialchars($search);
?>
看一下源代码就知道它怎么转义的了 :
在后面的学习中我会更详细的补充这两个函数的