PHP 第二节 数据类型之字符串类型
PHP中一个字符串可以通过下面的4种方式来定义:
- 单引号
- 双引号
- heredoc 语法结构
- nowdoc 语法结构 (自PHP 5.3.0以后)
单引号
定义一个字符串 的最简单的方法是用单引号把它包围起来 (标点符号 ')。
如果想要输出一个单引号,需在它的前面加个反斜线 (\)。在单引号前或在字符串的结尾处 想要输出反斜线,输入两条 (\\)。注意,如果在任何其它的字符前加了反斜线,反斜线将会被直接输出。
Note: 不像双引号 和heredoc语法结构, 在单引号字符串中的变量 和特殊含义的字符将不会被替换。
如果字符串是包围在双引号(")中, PHP将对一些转义字符进行解析,和单引号字符串一样, 如果输出转义字符之外的字符,反斜线会被打印出来。 PHP5.1.1以前,\{$var} 中的反斜线还不会被显示出来。
用双引号定义的 字符串最重要的特征是变量会被执行。
Heredoc结构
第三种定义字符串的方法是用heredoc句法结构:。在该提示 符后面,要定义个标识符,然后是一个新行。接下来是字符串本身,最后要用前面定义的标识符作为结束标志。
结束时所引用的标识符必须在一行的开始位置, 而且,标识符的命名也要像其它标签一样遵守PHP的规则:只能包含 字母、数字和下划线,并且不能用数字和下划线作为开头。
Warning要注意的是结束标识符这行除了 可能有一个分号(;)外,绝对不能包括 其它字符。这意味着标识符不能缩进,分号的前后也不能有任何空白或tabs。更重要的是结束标识符的前面必须是个被本地 操作系统认可的新行标签,比如在UNIX和Mac OS X系统中是\n ,而结束标识符(可能有个分号)的后面也必须跟个 新行标签。
如果不遵守该规则导致结束标签不“干净”,PHP将认为它不是结束标识符而继续寻找。如果在文件结束前也没有找到一个正确的结束标识符,PHP将会在最后一 行产生一个句法错误。
Heredoc结构就象是没有使用双引号的双引号字符串, 这就是说在heredoc结构中引号不用被替换,但是上文中列出的字符 (\n等)也可使用。 变量将被替换,但在heredoc结构中字符串表达复杂变量时,要格外小心。
Nowdoc结构
就象heredoc结构类似于双引号字符串,Nowdoc结构是类似于单引号字符串的。Nowdoc结构很象heredoc结构,但是 nowdoc不进行解析操作 。 这种结构很适合用在不需要进行转义的PHP代码和其它大段文本。与SGML的 结构是用来声明大段的不用解析的文本类似,nowdoc结构也有相同的特征。
一个nowdoc结构也用和heredocs结构一样的标记 , 但是跟在后面的标志符要用 单引号括起来,就像这样。heredocs结构的所有规则也同样适用于nowdoc结 构,尤其是结束标志符的规则。
变量解析
当字符串用双引号或heredoc结构定义时,其中的变 量将会被解析。
这里共有两种语法规则:一种简单 规则,一种复杂规 则。简单的句法规则是最常用和最方便的, 它可以用最少的代码在一个字符串中加入变量, 数组 值,或 对象属性。
复杂的句法规则是在PHP4以后加入的,被花括号包围的表达式是其明显标记。
简单句法规则
当PHP解析器遇到一个美元符号 ($) , 它会和其它很多解析器一样,去尽量形成一个合法的变量名。可以用花括 号来明确变量名的界线。
如果想要表达更复杂的结构,请用复杂句法规则。
复杂句法规则
复杂句法规则不是结构复杂而命名,而是因为它可以使用复杂的表达式。
任何想用在字符串中标量变量,数组变量或对象属性都可使用这种方法。 只需简单地像在字符串以外的地方那样写出表达式, 然后用花括号{和 }把它括起来。 由于 { 无法被转义,只有 $ 要紧挨着 {才会被认出来,可以用 {\$ 来表达 {$。
存取和修改字符串中的字符
字符串中的字符可以通过一个以0为开始的,用类似数组结构中的方括号包含对应的数字来查找和修改,比如 $str[42], 可以把 字符串想像数组 。 函数 substr() 和 substr_replace()可以用来实现多于一个字符 的情况。
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码和字符间的转换。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

PHP는 특히 빠른 개발 및 동적 컨텐츠를 처리하는 데 웹 개발에 적합하지만 데이터 과학 및 엔터프라이즈 수준의 애플리케이션에는 적합하지 않습니다. Python과 비교할 때 PHP는 웹 개발에 더 많은 장점이 있지만 데이터 과학 분야에서는 Python만큼 좋지 않습니다. Java와 비교할 때 PHP는 엔터프라이즈 레벨 애플리케이션에서 더 나빠지지만 웹 개발에서는 더 유연합니다. JavaScript와 비교할 때 PHP는 백엔드 개발에서 더 간결하지만 프론트 엔드 개발에서는 JavaScript만큼 좋지 않습니다.

PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.
