1. php字符串四种表达方式
单引号:
该表达方式不能解析变量,除了转义符\’和\\
双引号:
解析变量,能够解析所有转义符
heredoc语法结构:
在代码中可以解析变量
echo <<
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should print a capital 'A': \x41
EOT;
?>
nowdoc语法结构:
在代码中不能解析变量
$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;
2. 其他类型转换字符类型
2-1数值型转换成字符串型
数值->数值本身
echo 123;
echo ‘
’;
echo 34.5;
echo ‘
’;
2-2布尔类型转换成字符串类型
echo true;
echo ‘
’;
echo ‘A’,false,’B’;
注意:false转换成空字符串
2-3NULL转换成字符串
echo ‘C’,null,;D’;
注意:NULL也是转换成空字符串
2-4数组转换成字符串
$arr=array();
echo $arr;
报提示并说明是数组array
2-5资源转换成字符串
$handle=fopen(‘index.php’,’r’);
echo $handle;
2-6对象转换成字符串
$obj= new stdClass;
var_dump($obj);
echo $obj;
2-7强制转换和临时转换
//临时转换
$var=123;
$var=23.3;
$res=(string)$var;
var_dump($res,$var);
注意:临时转换本身的类型并没有发生变化
//永久转换
$str=’king’;
$str=123;
echo gettype($str);
$var=12;
settype($var,’string’);
var_dump($var);
2-8上述总结:
(1)转换成字符串的特殊
数值型->数值本身
true->1
false->空字符串
null->空字符串
=====
数组->Array
资源->resource id #数字
对象不能直接转换成字符串
(2)
临时转换和永久转换用到的函数
临时转换
$a=23;
(string)$a;或者strval($a)
永久转换
//settype($var,$type)设定类型
//gettype($var)得到类型
2-9字符串转换成其他类型
//取合法数字,如果不是以合法数字开始,转换成0
echo 1+’3king’;//4
echo 1.2+’4abc’;//5.2
echo 3+’2e2’;//203
echo 2+’true’;//2
2-10字符串转成布尔类型规律
//空字符串(’’),字符串(’0’),”0”,0,0.0,null,array()都是false,注意’0.0’字符串是true
3. 常用字符串函数分类
3-1字符串长度
strlen($string):得到字符串长度
3-2字符串查找
strpos($string,$search[,$offset]):在指定字符串中查找目标字符串第一次出现的位置
stripos($string,$search[,$offset]):忽略大小写的去查找
strrpos($string,$search[,$offset]):在指定字符串中查找目标字符串最后一次出现的位置
strripos($string,$search[,$offset]):忽略大小写的去查找最后一次出现的位置
strstr|strchr($string,$search[,$before_needle]):查找字符串的首次出现,返回的是字符串
stristr($string,$search[,$before_needle]):忽略大小写的去查找
strrchr($string,$search):查找指定字符在字符串中的最后一次出现
str_replace($search,$replace,$string):在指定字符串中查找另外一个字符串,找到之后将其替换成指定字符串
str_ireplace($search,$replace,$string):忽略大小写的去查找并替换
3-3字符串大小写转换
strtolower($string):返回小写之后的字符串
strtoupper($string):返回大写之后的字符串
ucwords($string):单词的首字母大写
ucfirst($string):字符串的单词的首字母大写
lcfirst($string):字符串的单词的首字母小写
3-4字符串截取
substr($string,$start[,$length]):截取字符串
substr_replace($string,$replace,$start[,$length]):替换字符串的子串
代码示例:
$string=’abcdef’;
echo substr($string,0,1);//a
echo substr($string,2,2);//cd
echo substr($string,3);//def
echo substr($string,-2);//ef
echo substr($string,-4,-2);//cd
echo substr($string,0,-3);//abc
echo substr($string,-4,-2);//cd
3-5字符串ASCLL
ord($char):得到指定字符的ASCII
chr($ascii):根据ASCII得到指定的字符
注意;大写A的Dec是65,到90的Z;小写a的Dec是97,到122的z
3-6加密
md5($string):计算字符串的md5的散列值,返回32位长度的字符串
sha1($string):计算字符串的sha1的散列值,返回40位长度的字符串
3-7过滤
trim($string[,$charlist]):默认过滤字符串两端的空格,也可以过滤指定字符串
ltrim($string[,$charlist]):过滤字符串左端
rtrim|chop($string[,$charlist]):过滤字符串右端
strip_tags($string[,$allowTag]):过滤字符串中的HTML标记
addslashes($string):使用反斜线引用字符串中的特殊字符
htmlentities($string[,$flag=ENT_COMPAT]):将所有字符转换成HTML实体
htmlspecialchars($string[,$flag=ENT_COMPAT]):将字符串中的特殊字符转换成HTML实体
nl2br($string):将字符串中的\n用
替换
3-8比较
strcmp($string1,$string2):比较两个字符串的大小
strcasecmp($string1,$string2):忽略大小写的比较字符串的大小
strnatcasecmp($string1,$string2):使用自然顺序算法比较字符串
strncasecmp($string1,$string2,$len):比较字符串的开始的若干个字符
代码示例:
/*
1--$str1>$str2
-1--$str1<$str2
0--$str1=$str2
*/
$str1=’abcdef’;//97
$str2=’ac’;//98
echo strcmp($str1,$str2);
3-9拆分/合并
explode($delimiter,$string):将指定字符串拆分成数组
implode|join($delimiter,$array):以指定分隔符将数组中的键值连接成字符串
str_split($string[,$split_length=1]):将字符串转换成数组
3-10格式化字符串
printf($format[,$args]):格式化输出字符串
sprintf($format[,$args]):格式化输出字符串
3-11其他常用
strrev($string):反转字符串
str_shuffle($string):随机打乱字符串
str_repeat($string):重复字符串
str_getcsv($input[,$delimiter=','[,$enclosure=''[,$escape='\\']]]):解析CSV字符串为一个数组
parse_str($str[,$arr]):将字符串解析成多个变量
4. 一些应用案例
4.1随机取字符串内的数值
mt_rand(从那个位置开始取,取值的长度)
$string=’abcdefghijklmnopqistuvwsyz’;
echo $string{mt_rand(0,strlen($string)-1)};
4.2验证用户名长度是否符合规范
$userLen=strlen($username);
4.3验证密码是否符合规范
4.4验证邮箱是否符合规范
必须存在@符号
strpos($email,@)//@在字符串第一次出现的位置
4.5转换和统一输入的验证码和验证码
trim表示去掉两边的空格
strtolower表示将字符串全部小写
4.6验证用户名是否符合规范
大写的A~Z的ASCII码是:65~98
小写的a~z的ASCII码是:97~122
ord()函数可以获得某字符的ASCII码
4.7验证密码是否一致
strcmp()是比较两个字符串的大小,当全等于的时候为0