PHP系列(五)PHP字符串处理-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

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()函数剥去字符串中的 HTMLXML 以及 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

 本文转自 sswqzx 51CTO博客,原文链接:http://blog.51cto.com/sswqzx/1965458


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: