

第5讲 字串简介,单双引区别,连接,去除首尾空格,转义,长度,截取,替换,搜索,比较,格式化与分割
5.1 字符串简介
数字0-9,字母a-z,特殊字符¥#&等,不可见字符,\n换行, \r回车,\t制表等
输出字符echo "I like PHP"
5.2 单引号与双引号区别
双引号内容可被解释且替换,单引号中内容被作普通字符处理
<?php
$test = "PHP"
$str = "I Like $test";
$str1 = "I like $test"; //单引所见即所得
echo $str;
echo $str1;
?>
5.3 字符串的连接符英文的点.,类开delphi的+
$name="明日编程典:";
$url= "www.mrbccd";
echo $name.$url.".com";
5.4 字符串操作
1)去除字串首尾空格和特殊字符
a. trim()去除字串左右空格与特殊字符
b. ltrim()去除左边空格与特殊字符
c. rtrim()去除右边。。。
$str ="\r\r(:@_@ aaaaaa @_@:) "
echo trim($str);
echo trim($str,"\r\r(: :)") //以上三个函数都有个可选参数,用以去除指定字符
2)转义,还原字符串数据
a. 手动转义,在字符前加\
例:echo '\'' //可以输出单引号'
echo 'select * from aaa where bb= \'cc\' '; //
b. 自动转义,
addslashes用来把字串中要转义才能输出的字符前斜线"\"转义,比如单引号
stripslashes用来将前面addslashes转义后的字串的转义符删除以还原字串
例:echo 'select * from aaa where bb= \'cc\' ';
echo $str.<br>";
$a = addslashes($str);
echo $a."<br>"
$b = stripslashes($a);
echo $b."<br>";
3)获取字串长度
strlen() //汉字及标点占2字符,英文其它每个1字符
例1:echo strlen("计算这个字串:www");
例2:if(strlen($_POST['pwd'])<6){ //检测密码的输入长度不得少于6位
echo "<script>alert('密码不得少于6位'); history.back();</script>";}
else{
echo "input OK"}
4)截取字符串
语法:string substr(string str, int strart, [int length])
参1,分别是要截取的字串,
参2表从第个字符开始,为负数时表从倒数第几个开始
参3表要截取的长度,为负表截取到倒数第n个字符
注:参2从0开始计算,即第一个字符表0
例:echo substr("abcdefghijklmnopqrst",6); //从第6个字符开始截取
echo substr("abcdefghijklmnopqrst",4,4); //从第4个字符开始截取4个字符
echo substr("abcdefghijklmnopqrst",-4,4); //从第倒数第4个字符开始截取4个字符
echo substr("abcdefghijklmnopqrst",0,-4); //从第1个开始截取倒数第4个字符
例2:$text="abcdefghijkmnopqrstuvwxyz";
if (strlen($text)>10){
echo substr($text,0,10)."...";
}else{
echo $test;
}
5)比较两个字串
语法:int strcmp(string str1,string str2)
//相同返回0,参1大于参2返回值大于0,小于参2返回值小于0
//函数区分大小写
$s1="AABB";
$s2="AABB";
$s3="mystr";
$s4="MYSTR";
echo strcmp(s1,s2);
echo strcmp(s3,s4);
6)检索字串
a. string strstr(string haystack, string needle)相当于strstr(str1,str2)
//返回str2在str1中首次出现的位置到str1末的字串,没找到则返回false
例:echo strstr("aabbccdd","bb");
echo strstr("aabbccddbb","bb");
b. int substr_count(string haystack,string needle)相当于substr_cout(str1,str2)
//返回str2在str1中出现的次数
例:$str1="aabbccddaa";
echo substr_count($str,'aa')
7)替换字串
a. mixed str_ireplace(mixed search, imxed replace,mix subject [,int &count])
相当于:str_ireplace(str2,str1,$str); ;//将str中的str2替换为str1
例:$str1="aa";
$str2="11";
$str="aabbccee";
b. string substr_replace(string str, string repl, int start,[int length])
substr_replace(str,str1,9,2) //把str中从第9个字符开始的2个字符替换为str1
str为要操作的字串
repl为要替换为的字串
start从那个字串开始
length替换的长度
例:$str="用今日的辛勤工作,换明日的双倍回报";
$replace="百倍";
echo substr_replace($str,$replace,26,4) //把第26开字符开始的4个字符替换为$replace
8)格式化字串
string number_format(float number,[int num_decimal_places],[string dec_seperator],[string thousands_seperator])
//参数可是1个,2个,4个,不能是3个
//一个参数时舍去小数点后的值,每1千用,隔开
//2个参数时去掉小数点后num_decimal_places位后的值,再将每1千用,隔开
//4个参数时去掉小数点后num_decimal_places位后的值,再用dec_seperator替换小数点,用thousands_seperator替换千位分隔符,
例:$num=1868.99;
echo number_format($num);
echo number_format($num,2);
$num=11252868.9954538;
echo number_format($num);
echo number_format($num,2,'.','.');
9)分割字串,返回值为数组
array explode(string separator,string str,[int limit])
参数separator表分割符,为空explode将返回false,分割符在str中找不到,则返回包含str全部的只有一个值的数组,
参数str为要分割的字串
参数limit可选
例:$str="aa@bb@cc@dd"
$str_arr=explode("@",$str);
print_r($str_arr);
echo $str_arr[0];