1、字符串简介
由零个或多个字符构成的一个集合,自负主要包含:
数字类型:1、2、3等。
字母类型:a、b、c等。
特殊字符:#、$、%、^、&等。
不可见字符:\n(换行)、\r(回车)、\t(Tab)等。
不可见字符较为特殊,用于控制字符串格式化,只能看到字符串输出结果。
<?php
echo "friut\rpear\napple\tbanana";
?>
2、单引号和爽引号的区别
两者的的区别在前文已经进行过描述。下面举例供读者体会。
<?php
$test = "PHP";
$str = "I like $test";
$str1 = 'I like $test';
echo $str;
echo "<br>";
echo $str1;
?>
输出结果:
I like PHP
I like $test
任何变量在双引号中都会转换成起对应的值进行输出,单引号是“所见即所得”无论有无变量,都会被当作字符输出。
在进行SQL查询之前,所有字符都必须加上单引号,以避免可能注入漏洞和SQL错误。
3、字符串的连接
半角句号“.”进行连接,可把两个或两个以上的字符串连接在一起。
<?php
$name = "百度:";
$url = "www.baidu";
echo $name.$url.".com";
//应用字符串连接符无法实现大量简单字符串的连接,PHP允许程序员在双引号中直接包含字符串变量,当echo语句后面使用的是双引号时,可以使用如下语句。
echo "<br>$name$url.com";
?>
输出结果:
百度:www.baidu.com
百度:www.baidu.com
4、字符串操作
去除字符串首尾空格和特殊字符
trim()函数:用于去除字符串开始位置和结束位置的空格,并返回去掉空格后的字符串。
语法格式:string trim(string str [,string charList]);
trim()函数charlist可选值如下:
\0 | NULL,空值 |
---|---|
\t | tab,制表符 |
\n | 换行符 |
\x0B | 垂直制表符 |
\r | 回车符 |
" " | 换行符 |
除此之外也可以自行定义需要删除的特殊字符。
<?php
$str = "\r\r(:@_@ 创图书编撰伟业 展软件开发雄风 @_@:) ";
echo trim($str);
echo "<br>";
echo trim($str,"\r\r(::)");
?>
输出结果:
(:@_@ 创图书编撰伟业 展软件开发雄风 @_@:)
@_@ 创图书编撰伟业 展软件开发雄风 @_@:)
ltrim()函数:除去字符串左边的空格或者特殊字符。用法同上。
rtrim()函数:除去字符串右边的空格或者特殊字符。用法同上。
5、转义、还原字符串数据
手动转义、还原字符串:字符串可以用单引号、双引号、定界符三种方式进行定义,当使用字符串时可能会出现这几种和PHP脚本混淆的字符,若要转义,在前方加上“\”
例如,若要表现"I'am"
则需要这样"I\'am"
<?php
echo 'select * from tb_book where bookname = \'PHP真好玩\'';
?>
输出结果:
select * from tb_book where bookname = 'PHP真好玩'
对于简单的字符串建议使用手动方法进行转义,对于数据量较大的字符串可使用自动转义函数进行转义。
自动转义、还原字符串:自动转义、还原字符串可以使用addslashes()函数和stripslashes()函数。
addslashes()函数用于为字符串str加“\”。语法格式:addslashes(string str)。
stripslashes()函数用于将str返回成原样。
<?php
$str = "select * from tb_book where bookname = 'PHP真好玩'";
echo $str."<br>";
$a = addslashes($str);
echo $a."<br>";
$b = stripslashes($str);
echo $b."<br>";
?>
输出结果:
select * from tb_book where bookname = 'PHP真好玩'
select * from tb_book where bookname = \'PHP真好玩\'
select * from tb_book where bookname = 'PHP真好玩'
注意:所有数据在插入数据库之前都要应用addslashes(0函数进行转义,避免特殊字符未经转义在插入数据库是出现错误。
在转义的时候还可以对要转义、还原的字符串进行限制范围,同样是使用上述的两个函数。
addcslashes()函数:
string addcslashes(string str, string charlist)
参数charlist表示在那些字符前加上“\”,如果参数中包括\n、\r等字符,则按照C语言风格进行转义,而其他非字母数字且ASCIIII低于32或高于126的字符将以八进制表示。
<?php
$a = "编程体验网";
echo $a;
echo "<br>";
$b = addcslashes($a,"编程体验网");
echo $b;
echo "<br>";
$c = stripcslashes($b);
echo $c;
?>
输出结果:
编程体验网
\347\274\226\347\250\213\344\275\223\351\252\214\347\275\221
编程体验网
注意:需要使用stripcslashes()函数进行还原。
6、获取字符串长度
语法格式如下:
int strlen(string str);
例:
<?php
echo strlen("编程体验网:www.bcty365.com");
?>
输出结果:
33
其中汉字占两个字符,数字、英文、小数点、下划线、空格都只占一个字符。
7、截取字符串
截取指定字符串中指定的字符串长度。
语法格式:substr(string str, int start, int length)
start:表示开始字符位置,若为负数,则从字符串末尾开始截取。
length:可选参数,表示截取字符个数,若为负数则表示渠道倒数第length个字符
注意:start指定的第一个字符是0,是从0开始的
<?php
echo substr("She is a well-read girl", 0);
echo "<br>";
echo substr("She is a well-read girl", 4, 14);
echo "<br>";
echo substr("She is a well-read girl", -4, 4);
echo "<br>";
echo substr("She is a well-read girl", 0, -4);
?>
输出结果:
She is a well-read girl
is a well-read
girl
She is a well-read
8、比较字符串
PHP中有三种比较方法,第一种是使用strcmp()函数按照字节进行比较,第二种是使用strnatcmp()函数按照自然规律排序法进行排序,第三种是使用strncmp函数指定从源字符串进行比较。
按字节进行字符串比较;strcmp()函数区分字符大小写。strcasecmp()函数不区分字符大小写。
<?php
$str1 = "明日编程词典!";
$str2 = "明日编程词典!";
$str3 = "mrsoft";
$str4 = "MRSOFT";
echo strcmp($str1, $str2);
echo strcmp($str3, $str4);
echo strcasecmp($str3, $str4);
?>
输出结果:
010
按自然排序法进行字符串比较:语法格式如下:
int strnatcmp(string str1, string str2);
如果字符串相等,则返回0,str1>str2返回1,否则返回0.
使用strnatcasecmp()不区分大小写。
<?php
$str1 = "str2.jpg";
$str2 = "str10.jpg";
$str3 = "mrsoft1";
$str4 = "MRSOFT2";
echo strcmp($str1, $str2);
echo strcmp($str3, $str4);
echo strnatcmp($str1, $str2);
echo strnatcmp($str3, $str4);
?>
输出结果:
11-11
指定从源字符串的位置进行比较:strncmp()函数用来比较字符串前n个字符。语法格式如下:
int strncmp(string str1, string str2, int len);
例子:
<?php
$str1 = "I like PHP !";
$str2 = "i am fine !";
echo strncmp($str1, $str2, 2);
?>
输出结果:
-1
9、检索字符串
PHP中提供了很多字符串查找函数,可以向word一样实现对字符串的查找。
strstr()函数:获取一个指定字符串在另一个字符串中首次出现的位置到后者末尾的子字符串,如果执行成功,则返回剩余字符串,如果没有找到匹配的字符串,返回false。语法格式如下:
string strstr(string haystack, string needle)
haystack | 必要参数,指定从那个字符串中进行搜索 |
---|---|
needle | 必要参数,指定搜索的对象。如果是一个值,就按照这个值对应的ASCII值相匹配的字符 |
本函数区分字母大小写。strchr()函数时从后开始检索。
substr_count()函数:获取指定字符在字符串中出现的次数。语法格式:int substr_count(string haystack, string needle)
<?php
$str = "明日编程词典";
echo substr_count($str, "明");
?>
输出结果:
1
10、替换字符串
实现对指定字符串中指定字符的替换,可以通过两个函数实现:str_ireplace()函数和substr_replace()函数。
str_ireplace()函数:使用新的字符串(子串)替换原始字符串中被指定的要替换的字符串。语法格式:mixed str_ireplace(mixed search, mixed replace, mixed subject[,int &count])
将所有在参数subject中出现的参数search以参数replace取代,参数&count表示取代字符串执行的次数,本函数区分大小写。
search | 必要参数,指定需要查找的字符串 |
---|---|
replace | 必要参数,指定替换的值 |
subject | 必要参数,指定查找的范围 |
count | 可选参数,获取执行替换的数量 |
<?php
$str2 = "某某";
$str1 = "**";
$str = " 某某公司是一家一计算软件技术为核心的高科技企业,多年来致力于行业管理软件开发。。。";
echo str_ireplace($str2, $str1, $str);
?>
输出结果:
**公司是一家一计算软件技术为核心的高科技企业,多年来致力于行业管理软件开发。。。
次函数不区分大小写,若要区分大小写使用函数str_replace()
<?php
$content = "白领女子公寓,温馨街南行200米,交通便利,亲情化专人管理,您的理想选择!";
$str = "女子公寓";
echo str_ireplace($str, "<font color = '#FF0000'>".$str.'</font>', $content);
?>
输出结果:
substr_replace()函数:对指定字符串中的部分字符串进行替换。语法格式:
string substr_replace(string str, string repl, int start, [int length])
str | 指定要操作的原始字符串 |
---|---|
repl | 指定替换后的新字符串 |
start | 指定替换字符串开始的位置。整数表示起始位置从字符串开头开始;负数表示从字符串的结尾开始;0表示从字符串的第一个字符开始 |
length | 可选参数,指定返回的字符串长度。默认是整个字符串,0表示插入而不是替代,整数表示从头开始,负数表示从后开始 |
<?php
$str = "用今日的辛勤工作,换明日的双倍回报!";
$replace = "百倍";
echo substr_replace($str, $replace, 26, 4);
?>
输出结果:
用今日的辛勤工作,换明日的百倍回报!
11、格式化字符串
按照格式化类型可分为字符串的格式化和数字的格式化,数字格式化最常用。number_format()函数,用来将数字字符串格式化。语法格式:string number_format(float number, [int num_decimal_places],[string dec_seperator],string thousands_seperator)
可以有一个参数,两个参数或四个参数,但是不能是三个参数。如果只有一个参数number,格式化之后会舍去小数点后的值,且每一千都会以“,”隔开。如果有两个参数,number格式化后会到小数点第num_decimal_places位,且每一千就会以逗号来隔开;如果以4个参数,dec_seperator用来替代小数点,thousands_seperator用来替代每一千隔开的逗号。
<?php
$number = 1868.96;
echo number_format($number);
echo "<br>";
echo number_format($number, 2);
echo "<br>";
$number2 = 11886655.760055;
echo number_format($number2, 2, '.', '.');
?>
输出结果:
1,869
1,868.96
11.886.655.76
12、分割字符串
字符串的分割是通过函数explode()实现的,按照指定的规则对一个字符串进行分割,返回值是数组。
语法格式:array explode(string separator, string str, [int limit])
separator | 必要参数,指定分割符。如果separator为空字符串“”,返回false。如果separator所包含的值在str中找不到,那么函数返回将包含str当然元素的数组 |
---|---|
str | 必选参数,指定要被分割的字符串 |
limit | 可选参数,如果设置,则返回的数组最多包含limit个元素,最后的元素将包含string的剩余部分,如果是负数,则返回除了-limit个元素外的所有元素 |
<?php
$str = "PHP编程词典@NET编程词典@ASP编程词典@JSP编程词典";
$str_arr = explode("@", $str);
print_r($str_arr);
?>
输出结果:
Array ( [0] => PHP编程词典 [1] => NET编程词典 [2] => ASP编程词典 [3] => JSP编程词典 )
13、合成字符串
implode()函数可以将数组内容合成一个新的字符串。语法格式:string implode(string glue, array pleces)
<?php
$str = "PHP编程词典@NET编程词典@ASP编程词典@JSP编程词典";
$str_arr = explode("@", $str);
$array = implode("@", $str_arr);
echo $array;
?>
输出结果:
PHP编程词典@NET编程词典@ASP编程词典@JSP编程词典