1.前言

PHP的字符串是基础的重点,因此掌握字符串的一些定义和函数,有助于我们更好的开发。

2.基本语法表达方式

2.1单引号

该表达方式不能解析变量,但能够解析转义符\’和\\

2.2双引号

能够解析所有变量转义符

2.3heredoc语法结构

在代码中可以解析变量,用法如下:

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;

?>

2.4nowdoc语法结构

在代码中不能解析变量,用法如下:

$str = <<

Example of string

spanning multiple lines

using nowdoc syntax.

EOD;

3.其他类型转换字符类型

3.1数值型转换成字符串型

数值->数值本身

echo 123;

echo‘
’;

echo 34.5;

echo‘
’;

3.2布尔类型转换成字符串类型

echo true;

echo‘
’;

echo‘A’,false,’B’;

注意:false转换成空字符串

3.3NULL转换成字符串

echo‘C’,null,;D’;

注意:NULL转换成空字符串

3.4数组转换成字符串

$arr=array();

echo $arr;

报错提示该变量是数组array

3.5资源转换成字符串

$handle=fopen(‘index.php’,’r’);

echo $handle;

3.6对象转换成字符串

$obj= new stdClass;

var_dump($obj);

echo $obj;

对象不能直接转换成字符串

3.7强制转换和临时转换

3.7.1临时转换

$var=123;

$var=23.3;

$res=(string)$var;

var_dump($res,$var);

注意:临时转换本身的类型并没有发生变化

3.7.2永久转换

$str=123;

echo gettype($str);

$var=12;

settype($var,’string’);

var_dump($var);

3.8字符串转换成其他类型

//取合法数字,如果不是以合法数字开始,转换成0

echo 1+’3king’;//4

echo 1.2+’4abc’;//5.2

echo 3+’2e2’;//203

echo 2+’true’;//2

3.9字符串转成布尔类型规律

首先注意空字符串(’’),字符串0(’0’),”0”,0,0.0,null,array()都是false,而’0.0’字符串是true

4.常用字符串函数分类

4.1字符串长度

strlen($string):得到字符串长度

4.2字符串查找

strpos($string,$search[,$offset]):区分大小写的在指定字符串中查找目标字符串第一次出现的位置

stripos($string,$search[,$offset]):忽略大小写的在指定字符串中查找目标符串第一次出现的位置

strrpos($string,$search[,$offset]):在指定字符串中查找目标字符串最后一次出现的位置

strripos($string,$search[,$offset]):忽略大小写的在指定字符串中查找目标字符串最后一次出现的位置

strstr|strchr($string,$search[,$before_needle]):查找字符串的首次出现,返回的是字符串从匹配点的剩余部分,如果未找到所搜索的字符串,则返回 FALSE

stristr($string,$search[,$before_needle]):忽略大小写的去查找字符串在另一字符串中的第一次出现,并返回字符串的剩余部分

strrchr($string,$search):查找指定字符在字符串中的最后一次出现,并返回从该位置到字符串结尾的所有字符

str_replace($search,$replace,$string):在指定字符串中查找另外一个字符串,找到之后将其替换成指定字符串(区分大小写)

str_ireplace($search,$replace,$string):在指定字符串中查找另外一个字符串,找到之后将其替换成指定字符串(不区分大小写)

4.3字符串大小写转换

strtolower($string):返回小写之后的字符串

strtoupper($string):返回大写之后的字符串

ucwords($string):字符串的单词的首字母大写

ucfirst($string):字符串的单词的首字母大写

lcfirst($string):字符串的单词的首字母小写

4.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

4.5字符串ASCLL

ord($char):得到指定字符的ASCII

chr($ascii):根据ASCII得到指定的字符

注意:大写A的Dec是65,到90的Z;小写a的Dec是97,到122的z

4.6加密

md5($string):计算字符串的md5的散列值,返回32位长度的字符串

sha1($string):计算字符串的sha1的散列值,返回40位长度的字符串

4.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用
替换

4.8比较

strcmp($string1,$string2):比较两个字符串的大小

strcasecmp($string1,$string2):忽略大小写的比较字符串的大小

strnatcasecmp($string1,$string2):使用自然顺序算法比较字符串

strncasecmp($string1,$string2,$len):比较字符串的开始的若干个字符

代码示例:

$str1=’abcdef’;//97

$str2=’ac’;//98

echo strcmp($str1,$str2);

/*

1--$str1>$str2

-1--$str1

0--$str1=$str2

*/

4.9拆分/合并

explode($delimiter,$string):将指定字符串拆分成数组

implode|join($delimiter,$array):以指定分隔符将数组中的键值连接成字符串

str_split($string[,$split_length=1]):将字符串转换成数组

4.10格式化字符串

printf($format[,$args]):格式化输出字符串

sprintf($format[,$args]):格式化输出字符串

4.11其他常用

strrev($string):反转字符串

str_shuffle($string):随机打乱字符串

str_repeat($string):重复字符串

str_getcsv($input[,$delimiter=','[,$enclosure=''[,$escape='\\']]]):解析CSV字符串为一个数组

parse_str($str[,$arr]):将字符串解析成多个变量

5.一些应用案例

5.1随机取字符串内的数值

/**

* 随机取字符串内的数值

* mt_rand(从那个位置开始取,取值的长度)

* @param int $length

* @return string

*/

public function getRandString($length=4){

$string='abcdefghijklmnopqistuvwsyz';

$str = '';

for ($i=0;$i

$str.= $string{mt_rand(0,strlen($string)-1)};

}

return $str;

}

5.2验证用户名长度是否符合规范

/**

* 检测用户名长度是否符合要求6-10

* @param $username

* @return array

*/

public function checkUserName($username){

$userLen = strlen($username);

if($userLen<6||$userLen>10){

$data = ['code'=>'error','msg'=>'用户名长度不符合规范','data'=>''];

}else{

$data = ['code'=>'ok','msg'=>'用户名长度符合规范','data'=>''];

}

return $data;

}

5.3验证密码是否符合规范

/**

* 验证密码是否符合规范

* @param $password

* @return array

*/

public function isPassword($password){

$pwdLen = strlen($password);

if($pwdLen==0){

$data = ['code'=>'error','msg'=>'密码不能为空','data'=>''];

}elseif($pwdLen<6||$pwdLen>10){

$data = ['code'=>'error','msg'=>'密码长度不符合规范','data'=>''];

}else{

$data = ['code'=>'ok','msg'=>'密码符合规范','data'=>''];

}

return $data;

}

5.4验证邮箱是否符合规范

/**

* 验证邮箱是否符合规范

* @param $email

* @return array

*/

public function checkEmail($email){

if(strpos($email,'@')==false){//@在字符串第一次出现的位置

$data = ['code'=>'error','msg'=>'非法邮箱','data'=>''];

}else{

$data = ['code'=>'ok','msg'=>'邮箱符合规范','data'=>''];

}

return $data;

}

5.5转换和统一输入的数据格式

/**

* 转换和统一输入的数据格式

*@param$string

*@returnstring

*/

public functionchangeStyle($string){

//trim表示去掉两边的空格

//strtolower表示将字符串全部小写

$string = trim(strtolower($string));

return$string;

}

5.6验证用户名是否符合规范

/**

* 验证用户名是否符合规范

* 大写的A~Z的ASCII码是:65~98

* 小写的a~z的ASCII码是:97~122

* ord()函数可以获得某字符的ASCII码

*@param$username

*@returnarray

*/

public functioncheckUserNameString($username){

$ascil = ord($username);

if(!(($ascil>=65&&$ascil<=90)||($ascil>=97&&$ascil<=122))){

$data = ['code'=>'error','msg'=>'用户名不符合规范','data'=>''];

}else{

$data = ['code'=>'ok','msg'=>'用户名符合规范','data'=>''];

}

return$data;

}

5.7验证密码是否一致

/**

* 验证密码是否一致

* strcmp()是比较两个字符串的大小,当全等于的时候为0

*@param$password

*@returnarray

*/

public functioncheckPassword($password,$pwd){

if(strcmp($password,$pwd)!==0){

$data = ['code'=>'error','msg'=>'两次密码不一致','data'=>''];

}else{

$data = ['code'=>'ok','msg'=>'密码一致','data'=>''];

}

return$data;

}

php 检查字符串类型,PHP之字符串类型与检验相关推荐

  1. 如何检查变量的类型是否为字符串?

    有没有办法检查python中的变量类型是否为字符串. 喜欢: isinstance(x,int); 对于整数值? #1楼 根据以下更好的答案进行编辑. 下来大约3个答案,找出basetring的凉爽. ...

  2. 字符串补充知识及列表类型

    字符串需要掌握的方法 1.strip 去除指定字符lstrip 去除左边指定字符rstrip 去除右边指定字符print('**sss****'.lstrip('*'))print('**sss*** ...

  3. Go 学习笔记(47)— Go 标准库之 strconv(string/int 互相转换、Parse 字符串转换为指定类型、Format 指定类型格式化为字符串)

    参考: http://c.biancheng.net/view/5112.html 在实际开发中我们往往需要对一些常用的数据类型进行转换,如 string . int . int64 . float ...

  4. MySQL 学习笔记(12)— 数据类型(定长字符、变长字符、字符串大对象、数字类型、日期时间类型、二进制类型)

    MySQL 常见的数据类型有字符串类型.数字类型.时间类型.二进制类型.具体的分类如下图: 1. 字符串类型 字符串类型用于存储字符和字符串数据,主要包含三种具体的类型:定长字符串.变长字符串以及字符 ...

  5. java double转换符_java中字符串怎么转换成double类型

    展开全部 public class Demo { public static void main(String[] args) { Demo demo = new Demo(); String str ...

  6. [译]ElasticSearch数据类型--string类型已死, 字符串数据永生

    原文链接: https://www.elastic.co/blog/s... Text vs. keyword 随着ElasticSearch 5.0的到来, 同时也迎来了该版本的重大特性之一: 移除 ...

  7. 日期类型存储成字符串类型的格式问题

    问题 ConversionException: Could not convert '2017-8-28 0:00:00' to java.util.Date at com.vaadin.data.u ...

  8. 字符串和整形、浮点类型的相互转化

    字符串转化为整形.浮点类 String str = "1"; float f = Float.parseFloat(s); double d = Double.parseDoubl ...

  9. qt 16进制字符串和十六进制数_Python字符串类型及其操作

    Hello,it's always me! 上次我们讲述了字符串的格式化输出槽位{}+format()用法,深得好评(我自己的),这次我们来讲述字符串的基本用法及相关函数. --1-- 字符串的访问 ...

最新文章

  1. 【Java8新特性】浅谈方法引用和构造器引用
  2. 浅谈单片机程序设计中的“分层思想”!
  3. ETHNET DHCP的两种方式
  4. aida64 extreme 序列号_基于SN序列号管理 轮胎行业仓储管理解决方案
  5. 蓝桥杯-删除数组零元素(java)
  6. 对于“知识”,我们存在哪些误解?
  7. 线程八大核心+java并发核心知识体系精讲_Java从业者如果不懂这些,面试80%都会挂在这些核心知识上面...
  8. 服务器性能估算参考(硬件-应用服务器)
  9. MYSQL--浅析索引
  10. 【Delphi】从内存读取或解压压缩文件(RAR、ZIP、TAR、GZIP等)(二)
  11. Python HTTP Error 403: Forbidden
  12. totolink服务器未响应,WiFi效果差的罪魁祸首竟然是这个 TOTOLINK为你深度讲解
  13. 图:中国航天六院演讲比赛使用的用户自定义的PPT界面_[评委计分系统-双屏专业版]提供支持
  14. 通达OA二次开发 小飞鱼工作流开发快捷CRM解决方案
  15. 用java编写圆锥,java编写圆锥形体积
  16. Java小农养成记第二十三天
  17. 载录Windows 9X、2000、XP、2003所有注册表设置
  18. 2021-4-13大学化学无机原理(7)酸碱质子理论,弱酸碱及两性物质溶液计算
  19. 格式: echo -e \033[字背景颜色;字体颜色m字符串\033[0m
  20. 【OFDM】多径信道下OFDM通信系统误码率仿真附matlab代码

热门文章

  1. R语言之连接mysql数据库
  2. 用Tableau制作10种漂亮的柱形图
  3. SAP UI5 应用开发教程之六十六 - 基于 OData V4 的 SAP UI5 表格控件如何实现删除功能试读版
  4. 使用 ABAP 手动解析包含二进制文件的 multipart/form-data 数据时遇到的问题
  5. SAP Spartacus 的会话管理 Session Management
  6. TypeScript class 表达式 - Class expression
  7. R3Injector实例里的records map的填充逻辑
  8. Angular Route数据结构里常用字段使用方法一览
  9. Spartacus同SAP Commerce Cloud交互的示意图
  10. angular基本知识学习笔记 - Component的基本概念