风之旅人 Android Dev Engineer

7.PHP字符串

2019-10-14
PHP

字符串类型

字符串定义语法

PHP中有四种:

1. 单引号字符串使用单引号包裹
2. 双引号字符串使用双引号包裹
引号方式比较适合定义那些比较短不超过一行或者没有结构要求的字符串
如果有结构要求或者内容超过一行可以使用以下两种结构定义

3. nowdoc字符串没有单引号的单引号字符串
$str = <<<边界符
	字符串内容
边界符;

4. heredoc字符串没哟双引号的双引号字符串
$str = <<<边界符
	字符串内容
边界符;
	//PHP字符串:定义
	header('Content-type:text/html;charset=utf-8');

	//引号定义
	$str1 = 'hello';
	$str2 = "hello";
	//var_dump($str1,$str2);


	//结构化定义
	//heredoc结构
	$str3 = <<<EOD
		hello
			world
EOD;

	//nowdoc结构
	$str4 = <<<'EOD'
		hello
			world
EOD;

	//var_dump($str3,$str4);

字符串转义

PHP中系统常用的转义符号
\’:在单引号字符串中显示单引号
\”:在双引号字符串中显示双引号
\r代表回车理论上是回到当前行的首位置
\n代表新一行
\t类似tab键输出4个空格
\$:在PHP中使用$符号作为变量符号因此需要特定识别
//定义字符串识别转义符号
$str1 = 'abc\r\ndef\t\'\"\$fg';
$str2 = "abc\r\ndef\t\'\"\$fg";

echo $str1,'<br/>',$str2;

其中,双引号中因为能够识别$符号,所以双引号中可以解析变量,而单引号不可以

$a = 'hello';
//变量识别
//双引号中变量识别的规则
//1. 变量本身系统能够与后面的内容区分:应该保证变量的独立性,不要让系统难以区分 👉str2,str3
//2. 使用变量专业标识符(区分),给变量加上一组大括号{} 👉 str4
$str1 = 'abce $a dfg';
$str2 = "abce $a dfg";
$str3 = "abce$adfg";
$str4 = "abce{$a}dfg";
echo $str1,'<br/>',$str2,'<br/>',$str3,'<br/>',$str4;

🍎

Notice: Undefined variable: adfg in C:\fastwork\Apache24\htdocs\test.php on line 9
abce $a dfg
abce hello dfg
abce
abcehellodfg
结构化定义字符串变量的规则
1	结构化定义字符串对应的边界符有条件
1.1	上边界符后面不能跟任何内容
1.2	下边界符必须顶格最左边
1.3	下边界同样后面只能跟分号不能跟任何内容

2	结构化定义字符串的内部边界符之间的所有内容都是字符串本身

$a = 'hello';
$str1 = <<<XXX
  //这是弹出内容
  <script>
    alert('$a');	//js弹出字符串必须要有引号
  </script>
XXX;

echo $str1;

字符串长度问题

  1. 基本函数strlen():得到字符串的长度(字节为单位)
//字符串长度
header('Content-type:text/html;charset=utf-8');

//定义字符串
$str1 = 'abcefjdoifaoi';
$str2 = '你好中国123';

echo strlen($str1),'<br/>',strlen($str2);

🌴中文在utf8字符集下占3个字节

  1. 多字节字符串的长度问题:包含中文的长度

  2. 多字节字符串扩展模块:mbstring扩展(mb:Multi Bytes)

首先需要加载PHP的 mbstring 扩展, php.ini

extension = mbstring

mb扩展可以带来更多函数。 mbstring 扩展针对的是一些关于字符统计:strlen只是针对标准交换码ASCII,mtstring会针对不同的字符集

//字符串长度
header('Content-type:text/html;charset=utf-8');

//定义字符串
$str1 = 'abcefjdoifaoi';
$str2 = '你好中国123';

echo strlen($str1),'<br/>',strlen($str2);

echo '<hr/>';
//使用mbstring扩展
echo mb_strlen($str1),'<br/>',mb_strlen($str2),'<br/>',mb_strlen($str2,'utf-8');

🍎 mbstring扩展

字符串相关函数

  1. 转换函数:implode(), explode(), str_split()
implode (连接方式,数组)将数组中的元素按照某个规则连接成一个字符串
explode (分割字符,目标字符串)将字符串按照某个格式进行分割变成数组
中国|北京|顺义 == array(中国,北京,顺义);
str_split(字符串,字符长度)按照指定长度拆分字符串得到数组
  1. 截取函数:trim(), ltrim(), rtrim()
trim (字符串[,指定字符])本身默认是用来去除字符串两边的空格中间不行),但是也可以指定要去除的内容是按照指定的内容循环去除两边有的内容直到碰到一个不是目标字符为止
ltrim()去除左边的
rtrim()去除右边的

var_dump(trim($str)); 👉 string(8) "abcd e f"
  1. 截取函数:substr(), strstr()
substr (字符串,起始位置从0开始[,长度])指定位置开始截取字符串可以截取指定长度不指定到最后
strstr (字符串,匹配字符)从指定位置开始截取到最后(✨可以用来去文件后缀名

🏋🌰
$str = ' abcd e f ';
//字符串截取
echo substr($str,1,3),'<br/>';
echo strstr($str,'c');
🍎
abc
cd e f
  1. 大小转换函数:strtolower(), strtoupper(), ucfirst()
strtolower全部小写
strtoupper全部大写
ucfirst首字母大写

$str = ' abcd e f ';
//字符串大小写
echo strtoupper($str),'<br/>';
echo ucfirst($str);
  1. 查找函数:strpos(), strrpos()
strpos (字符串匹配字符)判断字符在目标字符串中出现的位置首次
strrpos (字符串匹配字符)判断字符在目标字符串中最后出现的位置
🌰
$str = '123a234a3b2a';
//查找位置
echo strpos($str,'a'),'<br/>';
echo strrpos($str,'a');
🍎
3
11
  1. 替换函数:str_replace()
str_replace (匹配目标,替换的内容,字符串本身)将目标字符串中部分字符串进行替换

$str = '123a234a3b2a';
//字符串替换
echo str_replace('a','X',$str);
👉 123X234X3b2X
  1. 格式化函数: printf(), sprintf()
printf/sprintf (输出字符串有占位符,顺序占位内容..)格式化输出数据

$age = 50;
$name = 'TOM';
//格式化输出 ✨**sprintf**
echo sprintf("你好,今年我%d岁,我叫%s",$age,$name);
🍎
你好今年我50岁,我叫TOM
  1. 其他:str_repeat(), str_shuffle()
str_repeat()重复某个字符串N次
str_shuffle()随机打乱字符串

//其他字符串函数
$str = 'abcdefg';
echo str_repeat($str,5),'<br/>';
echo str_shuffle($str);
🍎
abcdefgabcdefgabcdefgabcdefgabcdefg
cefbdag


相关文章

上一篇 6.PHP错误处理

评论