PHP学习笔记11:字符串

本文详细介绍了PHP中字符串的使用,包括单引号与双引号的区别、字符串连接符、字符串基本操作如计算长度、清理空格、切分与组合、子串截取和替换。此外,还探讨了字符串查找、大小写转换等功能,是学习PHP字符串处理的实用笔记。

字符串的单引号和双引号

  1. 双引号内会输出变量的值,单引号则直接显示变量名称。
  2. 双引号可以通过\转义符输出特殊字符:
    \n新一行
    \tTab
    \\反斜杠
    \0ASCII码的0
    \$把此符号转义为单纯的美元符号,而不是做为变量的标识符
    \r回车
    {octal #}八进制转移
    x{hexadecimal #}十六进制转义

而单引号可以通过\转义符输出的特殊字符:
\'转义为单引号本身,而不作为字符串标识符。
\\用于在单引号前的反斜杠转义为其本身。

字符串连接符

字符串连接符就是.(点),即可以直接连接两个字符串,也可以连接两个字符串变量,还可以连接字符串和字符串变量。

除了常见的方法外,还可以使用{}的方法连接字符串:

<?php
	$a = "赵先生"; //定义字符串
	$b = "欢迎{$a}入驻新米米高级酒店"; //输出连接后的字符串
	echo $b;
?>

字符串的基本操作

基本操作主要包括对字符串的格式化处理、连接切分字符串、比较字符串、字符串子串的对比与处理等。

手动和自动转义字符串中的字符

手动转义字符串数据在引号内(包括双引号和单引号)通过\(反斜杠)使一些特殊字符转义为普通字符。
自动转义字符串的字符,是通过PHP内置函数addslashes()来完成。还原这个操作则是通过stripslashes()来完成的。以上两个函数也经常使用在格式化字符串中,以用于MySQL的数据库存储。

计算字符串的长度

计算字符串的长度在很多应用中出现,比如输入框输入文字的长度等,都会用到此功能。使用strlen()函数就可以实现这个功能。

<?php
	$aa = "四个字符sigezifu."; //定义字符串变量
	$changdu = strlen($aa); //用函数获取字符串的长度
	if(strlen($aa)>9){
		echo "输入的字符串的长度不能大于9个字符";
	}else{
		echo "字符串长度为$changdu";
	}
?>

运行这个,发现汉字不是占两个字符,utf8编码下,占三个字符。

字符串单词统计

使用str_word_count()函数可以实现字符串单词统计,但这个函数只对基于ASCII码的英文单词起作用,并不对UTF8编码的中文字符有什么作用。

<?php
	$a = "how do you do.";
	$b = "汉字句子的组成?谁知道呢。";
	echo str_word_count($a)."<br />";
	echo str_word_count($b);
?>

4
0

这个函数无法计算中文字符,查询结果为0。

清理字符串中的空格

清除空格要用到ltrim()rtrim()trim()函数。其中,ltrim()是从左边清楚字符串头部的空格,rtrim()是从右边清除字符串尾部的空格,trim()则是从字符串的两边同时去除头部和尾部的空格。
发现了一点就是无法对字符串中间位置的空格进行清除,毕竟正常句子中单词的分隔是使用空格的,空格是字符串的一部分。

字符串的切分与组合

字符串的切分使用explode()strtok()函数。切分的反向操作为组合,使用implode()join()函数。
其中explode()是把字符串切分成不同的部分存储在一个数组中,implode()则是把数组中的元素按照一定的间隔标准组合成一个字符串。

<?php
	$a = "How_are_you?";
	$b = "中国 人民 站起 来了!";
	$c = explode('_',$a);
	print_r($c);
	$d = explode(' ',$b);
	print_r($d);

	echo implode('>',$c)."<br />";
	echo implode('**',$d);
?>

Array ( [0] => How [1] => are [2] => you? ) Array ( [0] => 中国 [1] =>
人民 [2] => 站起 [3] => 来了! ) How>are>you? 中国人民站起**来了!

字符串子串的截取

在字符串中截取一个子串就是字符串截取。
用的函数substr()。这个函数有三个参数,分别规定了目标字符串、其实位置和截取长度。格式:

substr(目标字符串, 起始位置, 截取长度)

其中,目标字符串是某个字符串变量的变量名,起始位置和截取长度都是整数。
如果都是正数,起始位置的整数必须小于截取长度的整数,否则函数返回值为假。
如果截取长度为负数,则意味着从起始位置开始往后,除去从目标字符串结尾算起的长度数的字符以外的所有字符。

<?php
	$a = "Create a substring of this string.";
	$b = "创建这个字符串的子串。";

	echo substr($a,0,10)."<br />"; //截取前10个字符
	echo substr($a,1,10)."<br />"; //从第二个字符开始截取10个字符
	echo substr($a,0,-6)."<br />"; //截取除最右侧两个字符串外的字符
	echo substr($b,0,12)."<br />"; //截取字符串前12个
	echo substr($b,0,13)."<br />";
	echo substr($b,0,10)."<br />";
	echo substr($b,0,-3)."<br />";
	echo substr($b,0,-5);
?>
Create a s
reate a su
Create a substring of this s
创建这个
创建这个�
创建这�
创建这个字符串的子串
创建这个字符串的子�

字符串子串的替换

这个功能应该跟文本编辑器中替换功能一样。
完成这个操作使用substr_replace()函数,格式:

substr_replace(目标字符串, 替换字符串, 起始位置, 替换长度)

$pai = "π:3.1415926";
	echo substr_replace($pai, "*****", 10,5)."<br />";
	echo substr_replace($pai, "(省略号)", 9,5)."<br />";

	echo strlen("π")."<br />";
	echo strlen(":")."<br />";
	echo strlen(":")."<br />";
π:3.141*****
π:3.14(省略号)
2
1
3

后面我查询了一下中英文冒号和π占用的字符数量而已。

字符串查找

这个也跟文本编辑器一样,查找字符串。使用strstr()stristr()函数。格式:

strstr(目标字符串, 需要查找的字符串)

如果函数找到需要查找的字符或者字符串,就返回第一个查找到的字符串位置后所有的字符串内容。

stristr()函数是不敏感查找,就是对大小写不敏感,用法跟上面相同。

<?php
	$a = "I have a Dream that to find a string with a dream.";
	$b = "我有一个梦想,很大的梦想。";

	echo strstr($a,"dream")."<br />";
	echo stristr($a,"dream")."<br />";
	echo strstr($a,"that")."<br />";
	echo strstr($b,"梦想");
?>

运行结果:

dream.
Dream that to find a string with a dream.
that to find a string with a dream.
梦想,很大的梦想。

对中文支持 。另外就是两个函数对英文大小写敏感的问题。

大小写转换

通过大小写转换函数,可以修改字符串中字幕大小写不规范的问题。

strtolower(); 转换为小写
strtoupper(); 转换为大写
ucfirst(); 整个字符串首字母大写
ucwords(); 整个字符串以空格未分割符的单词首字母大写

例子:

<?php
	$str = "hello world! I have a dream.";
	echo strtolower($str)."<br />";
	echo strtoupper($str)."<br />";
	echo ucfirst($str)."<br />";
	echo ucwords($str);
?>

运行结果

hello world! i have a dream.
HELLO WORLD! I HAVE A DREAM.
Hello world! I have a dream.
Hello World! I Have A Dream.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值