PHP系列(五)PHP字符串处理

 php字符串处理

1、字符串的处理方式(分割匹配找查替换)

//声明一个关联数组,数组名为$lamp, 成员有4个

$lamp = array( ‘os‘=>‘Linux‘,‘webserver‘ =>‘Apache‘, ‘db‘=>‘MySQL‘, ‘language‘=>‘php‘ );

//可以解析,双引号中对于数组索引,右方括号(])标志着索引的结束,

//但是注意:不要在[]中使用引号,否则会在引号处结束

echo "A OS is $lamp[os].";

//不能解析,如果在对关联数组下标使用引号就必须使用花括号,否则将出错

echo "A OS is $lamp[‘os‘].";

//可以解析,如果在对关联数组下标使用引号就必须使用花括号,否则将出错

echo "A OS is {$lamp[‘os‘]}.";

echo "A OS is {$lamp[os]}."; //可以解析,注意PHP将数组下标看作常量名,并且常不存在时将常量名称转为了字中,效率低

echo "This square is $square->widthmeters broad."; //可以解析,对象中的成员也可以解析

echo "This square is$square->width00 centimeters broad."; //不能解析,可以使用花括号解决

echo "This square is{$square->width}00 centimeters broad."; //可以解析, 使用花括号解决

2、常用的字符串输出函数

Echo() 输出字符串 //echo 指令方式可以打印多个值

Print() 输出一个字符串  //有返回值、

区别:

Print有返回值 、echo没有

Print不能打印多个值、但echo指令方式可以打印多个值

Echo “aa”,”bb”,”cc”;

Die()  exit()输出一条消息、并退出当前脚本

Printf() 输出格式化字符串

Sprint()把格式化的字符串写入一个变量中

Sprint(“%s”, $int);

%% 返回百分比符号

%b  二进制数

%c  依照ASCII值的字符

%d  带符号的十进制数

%e   可续计数法(1.5e3)

%u  无符号十进制数

%f或%F  浮点数

%o   八进制数

%s  字符串

%x或%X   十六进制数

3、字符串处理函数

去除空格和字符串填充函数

Ltrim(string  str[,string charlist])

返回值:字符串

本函数用来删去字符串中的前导空格

Rtrim(string str[,stringcharlist])

返回值:字符串

本函数用来删除字符串的后缀空格

Trim(string  str[,string charlist])

返回值:字符串

截去字符串首尾的空格、本函数返回字符串string 首尾的空白字符去除后的字符串

//声明一个字符串、其中左侧有三个空格、右侧有二个空格、总长度9个字符

$str = “  lamp  ”;

Echo strlen($str);  //输出字符串的总长度为9

Echo strlen(ltrim($str)) //去掉左侧空格后的长度输出为6

Echo strlen(rtrim($str))//去掉右侧空格后的长度输出为7

Echo strlen(trim($str))//去掉二侧空格后的长度输同为4;

$str = “123 This is a test…”;

Echo ltrim($str, “0…9”);//过虑掉字符串左侧的数字、输出为This is a test…

Echo rtrim($str, “.”); //过虑掉字符串右侧所有“.”;输出为:123 Thisis a test

Echo trim($str, “0..9 A..Z”); //过虑掉字符串二端的数字和大写字母还有“.”

输出为:his is a test

Str_pad()按需要对字符串进行填充

语法:

String str_pad(string input, int pad_length,STR_PAD_LEFT)

STR_PAD_LEFT  字符串左添加

STR_PAD_RIGHT 字符串右添加
STR_PAD_BOTH 字符串二端添加

$str =”LAMP”;

Echo str_pad($str, 10);  //指定长度为10、默认空格在右边填补“LAMP”;

Echo str_pad($str, 10,”---”,STR_PAD_LEFT)//指定长度为10、 指定在左边填补“---lamp”;

Echo str_pad($str, 10, “--”,STR_PAD_BOTH)//指定长度为10、指定二端填补“---lamp---”

Echo str_pad($str,6,”--”,STR_PAD_RIGHT);//指定长度为6、默认在右边填补“lamp--”;

字符串大小写的转换

Strtolower(string)//将string全部变成小写字符

Strtoupper(string)//将string全部就成大写字符

Ucfirst(string)//将字符串第一个字符改大写

Ucwords(string)//将字符串每个字符第一个字母改大写

4、和html标签相关联的字符串格式化

Htmlspecialchars()把预定义的字符"<" (小于)和 ">" (大于)转换为 HTML 实体

Stripslashes()函数删除由addslashes()函数添加的反斜杠

Addslashes()在每个双引号(")前添加反斜杠

<from action=”” method=”post”>

Title:<input  type=”text” name=”title” value=”” />

<input type=”submit”  name=”dosubmit”  value=”提交”  />

</form>

<?php

If(isset($_POST[‘dosubmit’])){

$title= $_POST[‘title’];

Echo stripslashes(addslashes($title)).”<br>”;

Echo htmlspecialchars($title);

}

?>

Strip_tags()函数剥去字符串中的 HTML、XML 以及 PHP 的标签

strcmp(string1,string2)比较两个字符串(区分大小写)

本函数返回:

0  如果两个字符串相等

-1  如果 string1 小于 string2

1   如果 string1 大于 string2

Strcasecmp(string1,string2)比较两个字符串、不区分大小写(用法同上)

按自然顺序排序(用法同上)

Strnatcmp(string1,string2)区分大小写

Strnatcasecmp(string1,string2)不区分大小写

一、不用php函数、用方法写一个反转字符串的函数

$str = "www.bitedy.com";

function fan($str){

$n= "";

$m= strlen($str)-1;

for($i=$m;$i>0; $i--){

$n.=$str{$i};

}

return $n;

}

echo fan($str);

//echostrrev($str); 返转字符串、显示为:moc.ydetib.www

二、写一函数将字符串进行三个分组

$str = "1234567890";

function nformat($str){

$n= ""; //临时的变量

$m= strlen($str);//获取字符串长度

$k= $m % 3;//让整个长度和3取余之后余数是多少=0

for($i=0;$i<$m; $i++){

if($i%3== $k && $i!=0){

$n.=",";

}

$n.=$str{$i};

}

return $n;

}

echo nformat($str);

显示为:1,234,567,890

三、请写一个获取文件扩展名的函数

function Demo($str){

if(strstr($str, "?")){

list($file,$act) = explode("?",$str);

}else{

$file= $str;

}

$n = strrpos($file,"/")+1;

$filename = substr($file,$n);

$arr = explode(".",$filename);

echo array_pop($arr)."<br>";

}

Demo("http://www.bitedy.com/www/nat/init.inc.php?username=100");

Demo("http://www.bitedy.com/www/nat/init.inc.php");

Demo("C:/www/nat/init.inc.php");

Demo("init.inc.php");

Demo("/www/nat/init.inc.php");

显示为:php php php php php

strstr(string,search,before_search)搜索字符串在另一字符串中的第一次出现(区分大小写 stristr不区分大小写)

string 必需。规定被搜索的字符串。

Search 必需。规定所搜索的字符串。

Before_search 可选。默认值为 "false" 的布尔值。

如果设置为 "true",它将返回 search 参数第一次出现之前的字符串部分。

explode(separator, string,limit) 把字符串打散为数组

separator必需。规定在哪里分割字符串。

String必需。要分割的字符串。

大于 0 - 返回包含最多 limit 个元素的数组

小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组    0 - 返回包含一个元素的数组

strrpos(string,find,start) 查找字符串在另一字符串中最后一次出现的位置。

String  必需。规定被搜索的字符串。

Find  必需。规定要查找的字符。

Start  可选。规定在何处开始搜索。

substr(string,start,length) 返回字符串的一部分

string 必需。规定要返回其中一部分的字符串。

Start  必需。规定在字符串的何处开始。

正数 - 在字符串的指定位置开始

负数 - 在从字符串结尾开始的指定位置开始

0 - 在字符串中的第一个字符处开始

Length  可选。规定被返回字符串的长度。默认是直到字符串的结尾。

正数 - 从 start 参数所在的位置返回的长度

负数 - 从字符串末端返回的长度

array_pop(array)弹出并返回 array 数组的最后一个单元

四、写一个函数、算出二个文件的相对路径

error_reporting(E_ALL & !E_NOTICE);

function ab($a, $b){

$a= explode("/", trim(dirname($a), "/"));

$b= explode("/", trim(dirname($b), "/"));

$n= max(count($a),count($b));

for($i=0;$i<$n; $i++){

if($a[$i]==$b[$i]){

unset($a[$i]);

unset($b{$i});

}else{

break;

}

}

$path = str_repeat("../",count($b)).implode("/", $a);

return $path;

}

$a = "/a/b/y/12/14.php";

$b = "/a/b/c/d/11/y/24.php";

echo ab($a, $b);

显示为:../../../../y/12

时间: 2024-07-30 13:30:54

PHP系列(五)PHP字符串处理的相关文章

C语言快速入门系列(五)

C语言快速入门系列(五) C语言指针初涉                                           ------转载请注明出处:coder-pig 本节引言: 上一节我们对C语言复合数据类型中的数组进行了解析,在本节中,我们会对C语言复合数据类型中的 重点,C语言的灵魂-----指针进行学习!使用指针的好处:利用指针可以表示与使用复杂的数据结构; 更加方便地使用我们的数组与字符串;可以像汇编语言一样直接处理内存单元地址;可以动态地进行内存空间 分配,C语言指针是重点,同

C语言高速入门系列(五)

C语言高速入门系列(五) C语言指针初涉                                           ------转载请注明出处:coder-pig 本节引言: 上一节我们对C语言复合数据类型中的数组进行了解析,在本节中,我们会对C语言复合数据类型中的 重点,C语言的灵魂-----指针进行学习!使用指针的优点:利用指针能够表示与使用复杂的数据结构; 更加方便地使用我们的数组与字符串;能够像汇编语言一样直接处理内存单元地址;能够动态地进行内存空间 分配,C语言指针是重点,同

Apache Kafka系列(五) Kafka Connect及FileConnector示例

Apache Kafka系列(一) 起步 Apache Kafka系列(二) 命令行工具(CLI) Apache Kafka系列(三) Java API使用 Apache Kafka系列(四) 多线程Consumer方案 Apache Kafka系列(五) Kafka Connect及FileConnector示例 一. Kafka Connect简介 Kafka是一个使用越来越广的消息系统,尤其是在大数据开发中(实时数据处理和分析).为何集成其他系统和解耦应用,经常使用Producer来发送消

RX系列五 | Schedulers线程控制

RX系列五 | Schedulers线程控制 在我们上一篇文章中的,我们的小例子里有这么一段代码 //网络访问 .observeOn(Schedulers.io()) 事实上,我们在使用网络操作的时候,便可以控制其运行在哪个线程中,而Schedulers类,有四个方法,分别是 Schedulers.immediate(); Schedulers.newthread(); Schedulers.io(); Schedulers.computation(); 以及RxAndroid中的Android

MyBatis 系列五 之 关联映射

MyBatis 系列五 之 关联映射 一对多的关联映射 一对多关联查询多表数据 1.1在MyBatis映射文件中做如下配置 <!--一对多单向的连接两表的查询--> <resultMap type="Dept" id="deptMapper"> <id property="deptNo" column="deptNo"/> <result property="deptName

互联网金融的前世、今生和未来-系列五(今生):互联网金融的有效监管

互联网金融的前世.今生和未来--系列一:山雨欲来 互联网金融的前世.今生和未来-系列二(前世):金融与技术的首次亲密接触之金融电子化 互联网金融的前世.今生和未来-系列三(今生):一场跨界的战争 互联网金融的前世.今生和未来-系列四(今生):百花齐放的互联网金融业态 今生:金融与互联网的深度融合--互联网金融 金融行业作为现代经济的核心,对国民经济的平稳运行至关重要.为防止出现金融市场失灵的情况,如内幕交易.信息不对称.信托责任.监管套利.系统性风险及羊群效应等,世界各国政府普遍会基于本国的金融

Maven 系列 五 :使用Nexus搭建Maven私服

1 . 私服简介 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件.有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库:否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载.                                                  我们可以使用专门的 Maven 仓库管理软件来搭建私服,比如:Apache Archiva,Artifactory,Sonatype Nexus.这

SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型

原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.熟悉或了解Microsoft SQL Server 2008中的空间数据类型. 4.具备相应(比如OGC)的GIS专业理论知识. 5.其他相关知识. 通过前面几篇文章介绍了

【C++自我精讲】基础系列五 隐式转换和显示转换

0 前言 1)C++的类型转换分为两种,一种为隐式转换,另一种为显式转换. 2)C++中应该尽量不要使用转换,尽量使用显式转换来代替隐式转换. 1 隐式转换 定义:隐式转换是系统跟据程序的需要而自动转换的. 1)C++类型(char,int,float,long,double等)的隐式转换: 算术表达式隐式转换顺序为: 1.char - int - long - double 2.float - double //1)算术表达式 int m = 10; double n = m;//n = 10

VSTO之旅系列(五):创建Outlook解决方案

原文:VSTO之旅系列(五):创建Outlook解决方案 本专题概要 引言 Outlook对象模型 自定义Outlook窗体 小结 一.引言 在上一个专题中,为大家简单介绍了下如何创建Word解决方案的,所以本专题中将为大家介绍下Outlook相关的内容.我们从Visual Studio 2010 中Office节点下的模板中我们可以看到,Outlook只有外接程序的模板,并没有提供像Word或Excel这样的文档级的模板,所以VSTO没有为Outlook解决方案创建宿主项和宿主控件(Excel