PHP 第二节 数据类型之字符串类型

大萱同学_3993

大萱同学_3993

2016-06-13

1633人浏览

原创

btpanel phpsite 宝塔面板PHP网站
btpanel phpsite 宝塔面板PHP网站

宝塔面板 PHP 网站管理:站点创建、删除、启停、PHP 版本切换、域名管理、SSL证书管理、伪静态管理、数据库管理

下载

PHP中一个字符串可以通过下面的4种方式来定义:

  • 单引号
  • 双引号
  • heredoc 语法结构
  • nowdoc 语法结构 (自PHP 5.3.0以后)

单引号

定义一个字符串 的最简单的方法是用单引号把它包围起来 (标点符号 ')。

如果想要输出一个单引号,需在它的前面加个反斜线 ()。在单引号前或在字符串的结尾处 想要输出反斜线,输入两条 (\)。注意,如果在任何其它的字符前加了反斜线,反斜线将会被直接输出。

note: 不像双引号 和heredoc语法结构, 在单引号字符串中的变量 和特殊含义的字符将不会被替换。

如果字符串是包围在双引号(")中, PHP将对一些转义字符进行解析,和单引号字符串一样, 如果输出转义字符之外的字符,反斜线会被打印出来。 PHP5.1.1以前,{$var} 中的反斜线还不会被显示出来。

用双引号定义的 字符串最重要的特征是变量会被执行。

Heredoc结构

第三种定义字符串的方法是用heredoc句法结构:。在该提示 符后面,要定义个标识符,然后是一个新行。接下来是字符串本身,最后要用前面定义的标识符作为结束标志。

结束时所引用的标识符必须在一行的开始位置, 而且,标识符的命名也要像其它标签一样遵守PHP的规则:只能包含 字母、数字和下划线,并且不能用数字和下划线作为开头。

Warning要注意的是结束标识符这行除了 可能有一个分号(;)外,绝对不能包括 其它字符。这意味着标识符不能缩进,分号的前后也不能有任何空白或tabs。更重要的是结束标识符的前面必须是个被本地 操作系统认可的新行标签,比如在UNIX和Mac OS X系统中是 ,而结束标识符(可能有个分号)的后面也必须跟个 新行标签。

如果不遵守该规则导致结束标签不“干净”,PHP将认为它不是结束标识符而继续寻找。如果在文件结束前也没有找到一个正确的结束标识符,PHP将会在最后一 行产生一个句法错误。

Heredoc结构就象是没有使用双引号的双引号字符串, 这就是说在heredoc结构中引号不用被替换,但是上文中列出的字符 ( 等)也可使用。 变量将被替换,但在heredoc结构中字符串表达复杂变量时,要格外小心。

Nowdoc结构

就象heredoc结构类似于双引号字符串,Nowdoc结构是类似于单引号字符串的。Nowdoc结构很象heredoc结构,但是 nowdoc不进行解析操作 。 这种结构很适合用在不需要进行转义的PHP代码和其它大段文本。与SGML的 结构是用来声明大段的不用解析的文本类似,nowdoc结构也有相同的特征。

一个nowdoc结构也用和heredocs结构一样的标记 , 但是跟在后面的标志符要用 单引号括起来,就像这样。heredocs结构的所有规则也同样适用于nowdoc结 构,尤其是结束标志符的规则。

变量解析

当字符串用双引号或heredoc结构定义时,其中的变 量将会被解析。

这里共有两种语法规则:一种简单 规则,一种复杂规 则。简单的句法规则是最常用和最方便的, 它可以用最少的代码在一个字符串中加入变量, 数组 值,或 对象属性。

复杂的句法规则是在PHP4以后加入的,被花括号包围的表达式是其明显标记。

简单句法规则

当PHP解析器遇到一个美元符号 ($) , 它会和其它很多解析器一样,去尽量形成一个合法的变量名。可以用花括 号来明确变量名的界线。

 

如果想要表达更复杂的结构,请用复杂句法规则。

 

复杂句法规则

 

复杂句法规则不是结构复杂而命名,而是因为它可以使用复杂的表达式。

任何想用在字符串中标量变量,数组变量或对象属性都可使用这种方法。 只需简单地像在字符串以外的地方那样写出表达式, 然后用花括号{和 }把它括起来。 由于 { 无法被转义,只有 $ 要紧挨着 {才会被认出来,可以用 {$ 来表达 {$。

 

存取和修改字符串中的字符

 

字符串中的字符可以通过一个以0为开始的,用类似数组结构中的方括号包含对应的数字来查找和修改,比如 $str[42], 可以把 字符串想像数组 。 函数 substr() 和 substr_replace()可以用来实现多于一个字符 的情况。

 

Warning方括号中的数字超出范围将会产生空白。非整数类型被转换成整数,非整数类型转变成整数,非法类型会产生一个 E_NOTICE级别错误,负数在写入时会产生一个E_NOTICE,但读 取的是空字符串。被指定的字符串只有第一个字符可用,空字符串用指定为空字节。

 

有用的函数和操作符

字符串可以用'.' (点) 操作符连接起来, 注意 '+' (加号) 操作符没有 这个功能。 

对于字符串的操作有很多有用的函数。

可以参考 字符串函数 了解大部分函数, 高级的查找&替换功能可以参考 正则表达式函数 或 Perl类型的正则 表达式函数。

另外还有URL字符串的函数, 也有加密/解密字符串的函数。 (mcrypt 和 mhash).

最后,可以参考 字符类型函数。

 

转换成字符串

 

一个值可以通过在其前面加上(string)或用strval()函数来转变成 字符串。 在一个需要字符串的表达式中,字符串会自动转变,比如在使用函数 echo 或 print 时, 或在一个变量和一个 字符串 进行比较时,就会发生这种转变 类型 和 类型转换 可以更好的解释下面的事情,也可参考函 数 settype() 。

 

一个boolean TRUE 值被转换成 字符串"1"。 Boolean FALSE 被转换成"" (空的字符串)。 这种转变可以在 boolean 和 字符串 之间往返进行。

 

一个 整数 或 浮点数 被转变为数字的字面样式的字符串 (包括 浮点数中的指数部分),使用指数计数法的浮点数 (4.1E+6)也可转变。

数组转换成 字符串 "Array",因此, echo 和 print c无法显示出该数组的值。如果显示一个数组值,可以用 echo $arr['foo']这种结构,更多内容见下文。

在PHP 4中对象被转换成 字符串 "Object", 为了调试原因需要打印出对象的值,方法见正文。为了得到对象的类的名称,可以用 get_class() 函数。 在PHP5中, 可以用 __toString 。

资源总会被转变成"Resource id #1"这种结构的字符串 , 其中的 1 是PHP分配给该资源的独特数字。不用过多关注这种结构,它马上要转变了。为了得到一个 resource类型,可以用函数 get_resource_type()。

NULL 总是被转变成空的字符串。

如上面所说的,直接把数组, 对象或 资源 转换成 字符串 不会得到超出其自身的更多信息。可以使用函数 print_r() 和 var_dump() 列出这些类型的内容。

大部分的PHP值可以转变成 字符串s 来长期储存,这被称作串行化,可以用函数 serialize() 来实现。 如果PHP引擎设定支持 WDDX , PHP值也可储存成XML格式。

字符串转变成数字

当一个字符串被用在了一个数字的环境中,结果和类型如下:

如果字符串没有包含 '.','e'或'E' 并且数字值符合整数类型的限定 ( PHP_INT_MAX定义的), 这个 字符串 可被认定是一个 integer, 在其它情况下被认定为一个float。

字符串的开始部分给定了它的值,如果 字符串 以合法的数字开始,这个数字可直接使用。 否则,值就是 0 (零)。 合法数值由符号,后面跟着一个或多个数字(可能有个小数点),再跟着可选的指数符号如'e' 或 'E',后面跟着一个或多个数字。

不要想像在C语言中的那样,通过一个整数转换得到相应字符,使用函数 ord() 和 chr() 实现ASCII码和字符间的转换。

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

2026.11.12

80

15

Go-Zero安装与goctl环境配置教程
Go-Zero安装与goctl环境配置教程

本专题围绕Go-Zero的安装与工具链配置展开,讲清Go版本要求、goctl安装方式、代理镜像、protoc依赖与环境变量设置,说明多版本共存、升级回退与CI流水线安装的做法,并整理安装阶段的常见报错与验证步骤。

2026.11.12

60

15

Go-Zero零基础入门教程
Go-Zero零基础入门教程

本专题整理Go-Zero的入门知识,从框架定位、环境准备到跑通第一个API服务,讲清目录分层、配置加载、日志与中间件的基本用法,并对比Gin、Kratos的差异,帮助Go开发者建立整体认知,判断它是否适合当前项目。

2026.11.12

40

15

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

140

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

120

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

120

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

100

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

80

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

100

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习