PHP学习之字符串操作

字符串简介

在PHP中如何定义字符串

/**
 *提示 'undefined constant still' 没有定义的常量still,说明不加定界符会当成常量解析
 *字符串需要书写到定界符中
 *定界符 1.单引号 2.双引号 3.heredoc语法结构 4.nowdoc语法结构 
 */
echo still;

 不同定界符的区别

/**
 * 单引号和双引号的区别
 * 1.双引号解析变量,单引号不解析变量(因此效率更高)
 * 2.双引号解析所有转义符,单引号只解析两个转义符:\\  \'
 */
//当内容和定界符冲突的时候需要使用转义符
$name = 'hanystill';
echo '我的名字是$name','
';//我的名字是$name echo "我的名字是$name",'
';//我的名字是hanystill $str = 'He said "I\'m fine."';//He said "I'm fine." echo $str,'
'; $str = "He said \"I'm fine.\"";//He said "I'm fine." echo $str,'
';

花括号的作用

/**
 * 花括号{}的作用1:
 * 当PHP解析器遇到一个美元符号($)时,它会和很多其它解析器一样,去组合尽量多的标识以形成一个合法的变量名
 * 可以用花括号来明确变量名的界限,将变量扩成一个整体来解析
 */
//两种写法,推荐{$name},花括号中不要有空格,否则花括号会被当做普通字符
echo "我的名字为{$name}sss",'
'; echo "我的名字为${name}sss",'
'; /** * 花括号{}的作用2: * 对字符串中的字符做增删查改操作,字符串下标从0开始,可以使用[]实现相同的操作 * 编辑器报警告,说明不推荐这种写法 * Array or string offset access with curly braces deprecated in PHP 7.4. * PHP 7.4中使用花括号的数组或字符串偏移访问已弃用。 */ $str = 'abcdef'; echo $str{0},'
';//a 查找操作 $str{2} = 't';//修改操作,只能用一个字符修改一个字符 echo $str,'
';//abtdef $str{3} = 'hello';//只会用h替换d echo $str,'
';//abthef0 $str = '你好';//utf-8编码下,一个中文字符占三个字节 echo $str{0},$str{1},$str{2},'
';//输出“你”,这种操作没啥意义 $str = 'dest'; //删除操作,用空字符串/null替换,提示删除操作未生效 Warning: Cannot assign an empty string to a string offset $str{2} = ''; $str{2} = null; $str{5} = 'r'; echo $str,'
';//dest r var_dump($str);//string(6) "dest r" 字符串长度会变为6

heredoc和nowdoc


    
        编号
        名字
        内容
    
    
        1
        {$name}
        He said "I'm fine."
    

EOF;

echo $table;
echo '
'; echo <<<"TEST"

Hello world

TEST;


    {$name}
EOD;
echo $string;//{$name}没有被解析

 数据类型转换

 数值本身
 * true -> 1
 * false -> 空字符串
 * null -> 空字符串
 * 数组 -> Array
 * 资源 -> Resource id #数字
 * 对象不能直接转换成字符串
 */
echo 12.3;
echo '
'; echo true, false, null; echo '
'; $arr = array(1,11,22); echo $arr;//Array echo '
'; $handle = fopen('intro.php', 'r');//资源 echo $handle;//Resource id #3 // echo '
'; $obj = new stdClass;//对象 // echo $obj;//报错:Object of class stdClass could not be converted to string
/**
 * 其它数据类型转换为字符串类型 ———— 强制转换
 * 1.临时转换 (string)$var | strval($var) 不改变原数据类型
 * 2.永久转换 settype(var, type) 改变原数据类型
 * 改变结果和自动类型转换相似
 */
$var = 123;
$res = (string)$var;
var_dump($res, $var);//string(3) "123" int(123)
echo '
'; $var = true; var_dump(strval($var), $var);//string(1) "1" bool(true) echo '
'; $var = 12.34; echo gettype($var),'
';//double settype($var, 'string'); echo gettype($var);//string
/**
 * 字符串转换成其它类型
 * 1.字符串转数字 取合法数字,如果不是以合法数字开头,转换为0
 * 2.字符串转布尔 空字符串/'0'转为false,其它为true
 */
echo 1+'2白','
';//字符串转换为2 echo 3+'3e2','
';//识别为科学计数法,转换成3x10^3 echo 4+'true','
';//字符串转换为0,报警告 $res = '';//false $res = '0';//false $res = '0.0';//true $res = 'false';//true //其它数据类型转布尔,以下3种为false $res = 0.0; $res = null; $res = array(); if($res){ echo '我是真的
'; }else{ echo '我是假的
'; }

字符串函数库

常用函数罗列

/**
 * 字符串函数库
 * 总共有一百个左右字符串函数
 * 1.大小写转换 2.截取 3.比较 4.查找 5.过滤 6.连接 7.加密
 */
$str = 'heLLo pHP wOLd';
//is_string() 检测变量是否是字符串
var_dump(is_string($str));//bool(true)
//strlen() 得到字符串的长度
echo '
字符串的长度为:'.strlen($str); //strtolower() 将字符串转换为小写 //strtoupper() 将字符串转换为大写 //ucfirst() 将字符串的首字母转换为大小 //ucwords() 将字符串中每个单词的首字母转换为大写 echo '
',strtolower($str);//hello php wold echo '
',strtoupper($str);//HELLO PHP WOLD echo '
',ucfirst($str);//HeLLo pHP wOLd echo '
',ucwords($str);//HeLLo PHP WOLd //substr(string, start[, length]) 截取字符串,省略length取到末位 //start为负数表示位置,length为负数表示位置 echo '
',substr($str, -3, 2);//OL(从-3位置取2位) echo '
',substr($str, 1, -2);//eLLo pHP wO(从1位置取到-2位置) //strcmp(str1, str2) 比较字符串大小,区分大小写 //strcasecmp(str1, str2) 比较字符串大小,不区分大小写 //str1>str2返回值>0 str1',strcmp('adccf', 'afu');//-1 echo '
',strcasecmp('a', 'A');//0 //strpos(string, search) 查找字符串首次出现的位置,没有返回false,区分大小写 //stripos(string,search) 查找字符串首次出现的位置,不区分大小写(i —— ignore) //strrpos(string,search) 查找字符串最后一次出现的位置 //strripos(string,search)查找字符串最后一次出现的位置,不区分大小写 echo '
'; var_dump(strpos($str, 'php'));//bool(false) echo '
'; var_dump(stripos($str, 'l'));//int(2) echo '
'; var_dump(strrpos($str, 'O'));//int(11) echo '
'; var_dump(strripos($str, 'W'));//int(10) //strstr(string, search, before=false)查找字符串,返回字符串 //stristr(string, search, before) 查找并返回字符串,不区分大小写 echo '
',strstr('[email protected]', '@');//@163.com echo '
',stristr('[email protected]', '@', true);//334423 //strip_tags($string, $allow) 过滤字符串中的HTML标记和PHP标记 //trim(string[,char=' \t\n\r\0\x0b']) 过滤字符串首尾处的空白字符/指定字符 //ltrim(string) 过滤字符串开头处的空白字符 //rtrim(string) 过滤字符串结尾处的空白字符 $string = '

字符串过滤

hyperlink'; echo '
',strip_tags($string);//字符串过滤hyperlink echo '
',strip_tags($string, '');//过滤了h1,保留了a标签 echo '
','X',trim(' milk '),'X';//XmilkX //implode(glue, array) 以分隔符glue连接array的值,别名join echo '
',implode(',', array(1,2,4));//1,2,4 //md5() sha1() 字符串加密 echo '
',md5('hanystill'); echo '
',sha1('hanystill'); //str_split(string[,length]) 将字符串转换为数组,length是每一段的长度 $str = "Hello PHP"; $arr1 = str_split($str); $arr2 = str_split($str, 3); print_r($arr1);//Array([0]=>H [1]=>e [2]=>l [3]=>l [4]=>o [5]=> [6]=>P [7]=>H [8]=>P) echo '
'; print_r($arr2);//Array([0]=>Hel [1]=>lo [2]=>PHP)

字符串函数实战:注册表单校验

注册页面

'.$string[mt_rand(0, strlen($string))].'';
}
?>



    
    注册页面


    

注册页面

用户名 以字母开头,长度6~10
密码 密码不能为空,长度6~10
确认密码 两次密码一致
邮箱 邮箱必须包含@
兴趣爱好 PHP JAVA IOS C C++ NODE.JS
验证码

对注册表单进行校验

重新注册';

/**
 * 检测用户名的合法性,要求以字母开头,长度6~10
 */
//substr(string, start[, length]);//截取字符串
$char = substr($username, 0, 1);
//ord(char)返回字符的ASCII码值
$ascii = ord($char);
//在ASCII码表中,65~90为A~Z,97~122为a~z
if(!(($ascii>=65 && $ascii<=90)||($ascii>=97 && $ascii<=122))){
    exit('用户名不是以字母开头
'.$redirectUrl); } $length = strlen($username); if($length<6 || $length>10){ exit('用户名长度不符合规范
'.$redirectUrl); } /** * 校验密码,要求密码不能为空,长度6~10 */ $pwdLen = strlen($password); if($pwdLen == 0){ exit('密码不能为空
'.$redirectUrl); } if($pwdLen<6 || $pwdLen>10){ die('长度不符合规范
'.$redirectUrl); } if(strcmp($password, $password2)){//比较结果不为0 exit('两次密码不一致
'.$redirectUrl); } /** * 校验邮箱,要求包含@ */ if(strpos($email, '@')==false){//如果返回0说明以@开头,也是不合法的 exit('邮箱格式不合法
'.$redirectUrl); } /** * 校验验证码 */ if($verify !== $verify2){ exit('验证码错误
'.$redirectUrl); } /** * 判断用户是否选择了兴趣爱好 */ if(!empty($hobby)){ $hobbys = join(',', $hobby); } $password = md5($password);//使用md5对密码进行加密 echo '恭喜您注册成功!用户信息如下:
'; $userInfo=<< 用户名 密码 邮箱 兴趣爱好 {$username} {$password} {$email} {$hobbys} ELO; echo $userInfo;

你可能感兴趣的:(php,学习)