字符串和正则表达式
字符串的单引号和双引号
- 双引号内会输出变量的值,单引号则直接显示变量名称。
- 双引号可以通过
\转义符输出特殊字符:
\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.
本文详细介绍了PHP中字符串的使用,包括单引号与双引号的区别、字符串连接符、字符串基本操作如计算长度、清理空格、切分与组合、子串截取和替换。此外,还探讨了字符串查找、大小写转换等功能,是学习PHP字符串处理的实用笔记。
1万+

被折叠的 条评论
为什么被折叠?



