首页 > 编程语言 >【web开发】PHP中的字符串的基本操作及特点详解

【web开发】PHP中的字符串的基本操作及特点详解

时间:2023-06-21 23:00:39浏览次数:32  
标签:web name 字符 echo 使用 字符串 基本操作 PHP

前言

字符串几乎在所有编程语言都存在的一种数据类型,也是PHP中最重要的一种数据类型之一,更是日常开发中使用最多的一种数据类型。在web开发中,很多情况下需要对字符串进行处理和分析,这通常涉及字符串的格式化、连接与分割,比较、查找,翻转等等一系列操作。用户和系统的交互也基本上是通过文字来进行的,所以系统对文本信息,即字符的处理非常重视。在PHP的项目开发中有30%以上的代码在操作或处理字符串,字符串虽然操作简单,但非常重要。字符串的处理和分析在任何编程语言中都是一个重要的基础,往往是简单而重要。比如:信息的分类、解析、存储和显示,以及网络中的数据传输都需要操作字符串来完成,尤其在web开发中显得更为重要,日常的开发中大部分工作几乎都是在操作字符串,所以字母的处理也体现了程序员的一种编程能力

字符串的处理及特点

在面向过程的C语言中,字符串是作为字节数组处理的,而在面向对象的Java语言中,字符串是作为对象处理的,因为在java语言中一切皆对象在,java中,字符串实际是一个char数组(字符数组)。PHP则把字符串作为一种基本的数据来处理。字符串是一系列字符。在PHP中,字符和字节一样,也就是说共有256种不同字符的可能性。这也说明PHP对Unicode没有本地支持,一个GB2312编码的汉字占2个字节,一个UTF-8编码的汉字占3个字节。通常对字符串的处理涉及字符串的格式化、字符串的分割以及连接、字符比较,字符查找、字符匹配和替换等等操作。在PHP中,提供了大量的字符串的操作函数,功能强大,使用简便,但是对于一些比较复杂的字符串操作则需要借助PHP所支持的正则表达式来实现。如果字符串处理函数和正则表达式都可以实现字符串的操作,建议使用字符串处理函数来完成相关操作,因为字符串处理函数要比正则表达式处理字符串的效率高。但对于很多复杂的字符串操作,只有通过正则表达式才能完成,不过很多简单的操作在实际的开发中,PHP自带的字符串处理函数已经够用。

由于PHP是弱类型语言,所以其他类型的数据一般都可以直接应用于字符串操作函数里,而自动转换成字符串类型进行处理。比如:不需要像Java语言需要把其他数据先转化成字符串才能进行字符串的相关操作,大大降低了编码的复杂度,但是强类型语言和弱类型语言都各自的优势。就像生活,不过选择哪种过法,都需要作出一些舍弃。扯远了,言归正传,下面通过例子来了解字符串的特点:

<?php
echo substr("hello world",2,4);
echo "<br>";
echo substr(123456,2,4);
echo "<br>";
echo hello; //会先找hello常量,找不到就会将常量名当作字符串使用

输出结果如下:

【web开发】PHP中的字符串的基本操作及特点详解_字符串

在以上的示例中,将不同的数据类型的数据使用字符串截取处理函数substr()处理,依然能得到想要的结果.不仅如此,还可以将字符串"视为数组",当作字符集合看待.字符串中的字符可以通过在字符串之后用中括号(有些地方称方括号)指定所要从0开始的偏移量来访问和修改相关元素(在编程语言中,几乎所有语言的索引下标都是从0开始,我们的生活中一般从1开始,所以一定不要搞混),下面我们通过具体的实例来体会一下:

<?php

$s = "hello";
echo $s;

echo "<br>";
echo $s[0];
echo $s[1];
echo $s[2];
echo $s[3];
echo $s[4];
echo "<br>使用连接符:";
echo $s[0].$s[1].$s[2].$s[3].$s[4];

执行结果:不管是直接输出还是当成数组来访问都可以正常输出字符串,都可以得到一样的输出,而且使用数组的方式更为灵活.

【web开发】PHP中的字符串的基本操作及特点详解_数组_02

不过将字符串看作字符集合是,并不时真正的数组,不能使用数组的处理函数操作,比如:count($str)并不能获取到字符串的长度.而PHP脚本引擎无法区分是字符还是数组,会带来二义性.之前还可以使用花括号的语法访问字符或者数组,现在已不再使用,已经过时弃用,或不建议使用,后面使用中括号来替代它,为了向下兼容,花括号的访问方式仍可使用,比如下面的例子,仍可以正常输出,只不过或有相关的警告.

<?php

$s = "hello";
echo $s;
echo "<br>";
echo count($s);

echo "<br>";
echo $s{0};
echo $s{1};
echo $s{2};
echo $s{3};
echo $s{4};
echo "<br>使用连接符:";
echo $s{0}.$s{1}.$s{2}.$s{3}.$s{4};

执行结果如下:

【web开发】PHP中的字符串的基本操作及特点详解_PHP_03

双引号中的变量解析

当双引号或者定界符指定字符串是,其中的变量会被解析.有两种语法:一种是"简单的",一种是"复杂的".简单语法最通用和简便,他提供了解析变量,数组值或者对象属性的方法.复杂语法是从PHP4开始引进的,可以用花括号括起一个表达式.简单的语法我们前面的文章也曾是用过,如果遇到美元符号($),解析器会尽可能多地取得后面字符串以组成一个合法的变量名.若想明确指定名字的结束,可用花括号将变量名括起来.当然,在双引号中,同样也可以解析数组索引或者对象属性.对于数组索引,右方括号"]"标志着索引的结束.对象属性则和简单变量适用同样的使用规则:

<?php
class Student{
	public $name;
	public $age;
	
	function __construct($name,$age){
		$this->name = $name;
		$this->age = $age;
	}
}
$strArray = array('name'=>'zhangsan','age'=>'18', 'sex'=>'male','school'=>'xiwangxiaoxue'); 

echo "student name is $strArray[name]";//不要在[]中使用引号,否则会在引号处结束
echo "<br>";
//echo "student name is $strArray['name']";//不要在[]中使用引号,否则会在引号处结束,会报错如果使用单引号在中括号里面,需用使用花括号括住变量
echo "student name is {$strArray['name']}";//不要在[]中使用引号,否则会在引号处结束,会报错如果使用单引号在中括号里面,需用使用花括号括住变量
echo "<br>";
echo "student name is {$strArray[name]}";//这样也可以解析,但要注意PHP将数组下标看作了常量名,并且当不在时将常量名称转为了字符串,效率较低

echo "<br>";
$st = new Student("lisi",12);
echo "student name is $st->name";

echo "<br>";
echo "student name is $st->name00";//无法解析,可使用花括号括起来

echo "<br>";
echo "student name is {$st->name}00";

执行结果如下:

使用在方括号中使用使用引号直接报错无法解析:

【web开发】PHP中的字符串的基本操作及特点详解_字符串_04

注释掉之后执行结果如下:

【web开发】PHP中的字符串的基本操作及特点详解_PHP_05

对于任何更复杂的情况,应该使用复杂语法,不是因为复杂而称其复杂,而是因为用这个方法可以包含的表达式更为复杂.实际上,使用此语法可以在字符串中包含任何在名字空间的值.仅仅用和在字符串之外同样的方法写一个表达式,然后用一对花括号{}把它包含进来.因为不能转义"{",此语法仅在$紧跟在{后面时被识别(可以用"{\$"来得到一个字面上的"{$")

使用字符串需要注意的事项

  1. 一个字符串变得非常巨大也没有问题,PHP没有强加限制字符串的大小范围,所以完全没有必要担心长字符串.
  2. 不要指望在将一个字符转换成整型时能够得到该字符的编码,可能在C语言中会这么做,但是在PHP中,如果希望在字符编码和字符之间转换,可使用ord()和chr()函数处理.
  3. 在PHP中提供的字符串函数处理的字符串,大部分都不是在原字符串上修改,而是返回一个格式化后的新字符串.

标签:web,name,字符,echo,使用,字符串,基本操作,PHP
From: https://blog.51cto.com/micai01/6532816

相关文章

  • 打开PHP和Apache的错误提示
    如果使用PHP+Apache,在缺省设置下,PHP编码错误是不会提示的,这对于开发来说,是很不方便的。可以使用以下步骤打开出错提示:1.打开php.ini文件。以我的ubuntu为例,这个文件在:/etc/php5/apache2目录下。2.搜索并修改下行,把Off值改成Ondisplay_errors=Off3.搜索下行error_reporting......
  • win7 下安装 Microsoft Web Application Stress Tool
    MicrosoftWebApplicationStressToolMicrosoftWebApplicationStressTool能有效测试一个网站的负载性能,这个软件可以通过脚本模拟100个强并发用户的访问,并模拟实际用户的一些点击操作,WAS还可以连接上远程Windows网站服务器的性能计数器(PerformanceCounter),通过对服务器性能(C......
  • PHP的bool值
    PHP中,当其他类型变量转换为boolean时,以下值被认为是FALSE:布尔值FALSE自身;整型值0(零);浮点型值0.0(零);空字符串(""),以及字符串("0");不包括任何元素的数组;不包括任何成员变量的对象(仅PHP4.0适用);特殊类型NULL(包括尚未设定的变量);从没有任何标记(tags)的......
  • 漏洞扫描:Web安全漏洞扫描与审计
    1、首先进入w3af文件目录之下,如下图1所示。图1显示usr/local/src/w3af目录下的内容2、使用ls命令查看w3af文件目录下的内容,有w3af_console和w3af_gui,console是打开命令行,gui是打开图形界面,本次实验使用。/w3af_console命令,如上图1所示。图2plugins命令help截图3、输入“outp......
  • PHP函数或者变量前增加@的用途
    在变量或函数前使用@修饰符可以隐藏警告,而该警告可能指示了一个编程错误,所以使用时要小心。通过使用@修饰符,可以把这个代码写得更简洁。这样可以避免显示在未定义变量上使用自增操作符(++)可能带来的警告。如果使用自增操作符时变量未定义,将声明一个值为0的新变量,并产生一个警告。......
  • 使用XDebug进行PHP调试
    步骤1、获取Xdebug,下载地址,根据你的操作系统情况,选择合适的下载:http://xdebug.org/download.php 假设下载后的文件为:php_xdebug.dll 2、加载PHP的这个插件以WAMPSERVER为例,我是把它装在D:\wamp\目录下,我就需要把php_xdebug.dll文件拷贝到D:\wamp\bin\php\php5.3.0\ext......
  • Mac下如何复制webp图片
     将WebP格式图片拖到Chrome浏览器标签栏中(浏览器是肯定支持查看的,而且是Google自家的),这个时候图片是能够正常查看的。我们右键选中图片,选择「复制图片」。打开macOS系统自带的「预览」工具,点击菜单栏「文件」,选中「从剪贴板新建」,这时候图片就显示在「预览」工具的窗口中......
  • webdriver根据PARTIAL_LINK_TEXT获取元素
    webdriver根据PARTIAL_LINK_TEXT获取元素#encoding=utf-8importtimefromseleniumimportwebdriverfromselenium.webdriver.common.byimportBydriver=webdriver.Chrome()#打开百度首页driver.get("https://www.baidu.com")#根据PARTIAL_LINK_TEXT获取元素dri......
  • webdriver根据class_name获取元素
    webdriver根据class_name获取元素#encoding=utf-8importtimefromseleniumimportwebdriverfromselenium.webdriver.common.byimportBydriver=webdriver.Chrome()#打开百度首页driver.get("https://www.baidu.com")#根据class_name获取元素driver.find_eleme......
  • webdriver根据name名称获取元素
    #encoding=utf-8importtimefromseleniumimportwebdriverfromselenium.webdriver.common.byimportBydriver=webdriver.Chrome()#打开百度首页driver.get("https://www.baidu.com")#根据name名称获取元素driver.find_element(by=By.NAME,value="wd").send_keys......