PHP的字符串函数

 

1、字符串的连接

字符串可以使用字符串连接符(.)来连接

常见的用途是建立大块的HTML字串代码,赋值号
(=)
连接符 (.)

可以被简写合并为 (.=)

符号

 

2、在字符串中使用变量

这个功能让你无须使用连接符号来粘和大量的简单字符串

 

单引号串和双引号串在PHP中的处理是不相同的。双引号串中的内容可以被解释而且替换,而单引号串中的内容总被认为是普通字符。例如:

$foo = 2;
echo "foo is $foo"; //
打印结果: foo is 2
echo 'foo is $foo'; //
打印结果: foo is $foo
echo "foo is $foo\n"; //
打印结果: foo is 2
(同时换行)
echo 'foo is $foo\n'; //
打印结果: foo is
$foo\n

 

为避免这些字串使用中的潜在问题,我们通常把复杂的变量从字串中分离开来,就像这样:
echo 'value = ' . $a[$i][$j];

还有一种办法是将复杂变量用花括号括起来,语法分析器就能正确辨认了:
echo "value = {$a[$i][$j]}" //打印二维数组$a的某个元素

这样,又出现新问题了。当我们想在字串中引用花括号字符本身时,就要记得使用转义符了:

$var = 3;
echo "value = {$var}"; //
打印结果 "value = 3"
echo "value = \{$var}"; //
打印结果 "value =
{3}"

 

3字符串的长度

长度
PHP提供strlen函数来计算字符串的长度:
$str = "test";
echo strlen($str); //
将输出 4
有点奇怪的是strlen将中日等汉字以及全角字符都当作两个或四个长度计算。好在mbstring或icon两个函数可以帮助解决这个问题,比如:
$len = iconv_strlen($str, "GBK");
$len = mb_strlen($str, "GBK");

注:mbstring模块提供了大量的对含有多字节字符的字符串的处理函数,推荐多加应用

 

4、字符串的分隔与连接
PHP允许你把一个字符串按照一个分隔符进行分隔成一个数组,或者将一个数组组合成一个字符串。看下面的例子:
$str = "i love iwind";
$array = explode(" ", $str);

上面的explode函数,就把$str字符串按空格字符进行分隔,结果返回一个数组$array:array("i", "love",
"iwind").与explode函数有类似功能的有:preg_split(), spliti(), split()等函数。

与此相反的,implode和join则能把一个数组结合成一个字符串,他们是具有完全相同功能的函数。
$array = array("i", "love", "iwind");
$str = implode(" ", $array);

例中的implode函数将数组$array的每个元素用空格字符进行连接,返回一个字符串
$str:
"i love iwind".

 

5、字符串的裁剪
一个字符串首和尾,可能不是你想要的部分,就可以用

trim去除一个字符串的两端空格,

rtrim去除一个字符串的尾部空格,

ltrim去除一个字符串的首部空格等函数

echo trim(" i love iwind "); //
将得到 "i love iwind"
echo rtrim(" i love iwind "); //
将得到 " i love
iwind"
echo ltrim(" i love iwind "); //
将得到 "i love iwind
"

其实这三个参数不仅可以去除字符串首尾的空格,还可以去除它们的第二个参数指定的字符,如:
echo trim(",1,2,3,4,", ","); //
将得到 1,2,3,4

两端的","号被裁掉了。

有时还会看到有人使用chop这个函数,其实它是rtrim的同义函数

 

6、字符串大小写转换
对于英文字母来说,可以用strtoupper,strtolower将其转变成大写或小写。
echo strtoupper("i love iwind"); //
将得到 I LOVE IWIND
echo strtolower("I LOVE IWIND"); //
将得到 i love
iwind

 

7、字符串的比较
一般可以用
!=, ==
比较两个对象是否相等,只所以说是两个对象,是因为它们不一定全部为字符串,也可以为整型等等。比如
$a = "joe";
$b = "jerry";
if ($a != $b)
{
    
echo "不相等";
}
else
{
    
echo "相等";
}

如果用 !==,===(可以看到多了一个等号)比较的话,两个对象的类型要严格相等才能返回true;否则用==,!=则会将字符串自动转换成相应的类型,以便进行比较.
22 == "22"; //
返回 true
22 === "22"; //
返回false

正因为这样,所以我们的程序时常会发生一些想不到的“意外”:
0 == "我爱你"; //
返回true
1 == "1
我爱你";//

返回true

PHP里还有这样一组用于字符串比较的函数:strcmp,strcasecmp,strncasecmp(),
strncmp(),它们都是如果前者比后者大,则返回大于0的整数;如果前者比后者小,则返回小于0的整数;如果两者相等,则返回0.它们比较的原理与

其它语言的规则都是一样的。
strcmp是用于区分大小写(即大小写敏感)的字符串比较:
echo strcmp("abcdd", "aBcde"); //
返回 1
(>0),
比较的是 "b"和"B"

strcasecmp用于不区分大小写的字符串比较:
echo strcasecmp("abcdd", "aBcde"); //
返回 -1
(<0),
比较的是"d"和"e"

strncmp用于比较字符串的一部分,从字符串的开头开始比较,第三个参数,为要比较的长度:
echo strncmp("abcdd", "aBcde", 3); //
返回 1
(>0),
比较了 abc

和 aBc

strncasecmp用于不区分大小写的比较字符串的一部分,从字符串的开头开始比较,第三个参数,为要比较的长度:
echo strncasecmp("abcdd", "aBcde", 3); //
返回 0,

比较了 abc

和 aBc,

由于不区分大小写,所以两者是相同的。

还有一种情况是单单比较字符串大小,达不到我们预定的要求,比如照常理
10.gif
会比 5.gif

大,但如果应用上面几个函数,就会返回 -1,即表示
10.gif比5.gif,针对这种情况,PHP提供了两个自然对比的函数strnatcmp,strnatcasecmp:
echo strnatcmp("10.gif", "5.gif"); //
返回 1
(>0)
echo strnatcasecmp("10.GIF", "5.gif"); //
返回 1
(>0)

 

8、字符串的替换
替换的意义在于将一个字符串的一部分进行改变,使之成为别外一个新的字符串,以满足新的要求。PHP里通常用str_replace("要替换的内容", "要取代原内容的字符串", "原字符串")进行替换。
echo str_replace("iwind", "kiki", "i love iwind, iwind said");
//
将输出 "i love kiki, kiki
said"

即将
原字符串中的所有"iwind"都替换成了"kiki".

str_replace是大小写敏感的,所以对你不能设想用
str_replace("Iwind",
"kiki",...)替换原字符串中的"iwind".

str_replace还可以实现多对一,多对多的替换,但无法实现一对多的替换:
echo str_replace(array("iwind", "kiki"), "people", "i love kiki,
iwind said");

将会输出
i love people, people said
第一个参数中的array("iwind", "kiki")都被替换成了"people"

echo str_replace(array("iwind", "kiki"), array("gentle man",
"ladies"), "i love kiki, iwind said");

输出 i love ladies, gentle
man said
。也就是说第一个数组中的元素被第二个数组中的相对应的元素替换掉了,如果有一个数组比另一个数组元素数要少,那么不足的都会当作空来处理。

与此有些类似的是strtr,用法请参阅手册,它们的比较请参阅http://diary.4kiki.net/index.php?action=info&id=372
.

此外,PHP还提供了substr_replace,实现替换一部分的字符串。语法如下:
substr_replace (原字符串,
要替代的字符串,

开始替换的位置 [,

替换的长度])
其中,开始替换的位置从0开始计算,应该小于原字符串的长度。要替换的长度是可选的。
echo substr_replace("abcdefgh", "DEF", 3); //
将输出 "abcDEF"
echo substr_replace("abcdefgh", "DEF", 3, 2); //

将输出 "abcDEFfgh"

第一个例子中,从第三个位置(即"d")开始替换,从而把
"defgh"都替换成了“DEF”
第二个例子中,也是从第三个位置(即"d")开始替换,但只能替换2个长度,即到e,所以就把"de"替换成了"DEF".

PHP还提供了preg_replace,preg_replace_callback,ereg_replace,eregi_replace等函数应用正则表达式来完成字符串替换

 

9、字符串的查找与匹配
PHP里用于查找或者匹配或者定位的函数非常多,它们都有不同的意义

strstr,stristr.后者与前者的功能,返回值都一样,只是不区分大小写。
strstr("母字符串", "子字符串")用来查找子字符串在母字符串中第一次出现的位置,并返回母字符串中从子字符串开始到母字符串结束的部分。比如
echo strstr("abcdefg", "e"); //将输出
"efg"

如果找不到子字符串,则返回空。因为可以用来判断一个字符串中是否含有另外一个字符串:
$needle = "iwind";
$str = "i love iwind";
if (strstr($str, $needle))
{
    
echo "里面有
iwind";
}
else
{
    
echo "里面没有
iwind";
}

将会输出"里面有
iwind"

HTML相关
1,htmlspecialchars($string)
这是它的最简单用法,将字符串中的一些特殊字符(顾名思义)&,',"<,>转换成它们对应的HTML实体形式:
$str = "i love <font
color="red">kiki</font>,
iwind said.";
echo htmlspecialchars($str);

将会输出
i love &lt;font
color=&quot;red&quot;&gt;kiki&lt;/font&gt;,
iwind said.

2,htmlentities($string)
将所有能转换成实体形式的字符都转换成实体形式。

3,html_entity_decode($string);
PHP4.3.0以后加入的具有与htmlentities($string)相反的功能。

4,nl2br($string)
将字符串中所有换行符转变成<br /> +

换行符。如:
$str = "i love kiki,\n iwind said.";
echo nl2br($str);

将会输出
i love kiki,<br />
iwind said.

 

10、字符串的加密
加密字符串最常用的就是md5了,它将一个字符串转换成一个长32位的唯一的字符串。
echo md5("i love iwind"); //
将输出 "2df89f86e194e66dc54b30c7c464c21c"

PHP5给md5加了第二个参数,从而使它可以输出16位的加密后的字符串

 

11、查找字符位置函数:
strpos($str,search,[int]):查找search在$str中的第一次位置从int开始;
stripos($str,search,[int]):函数返回字符串在另一个字符串中第一次出现的位置。该函数对大小写不敏感
strrpos($str,search,[int]):查找search在$str中的最后一次出现的位置从int

 

12、加空格函数
chunk_split($str,2);向$str字符里面按2个字符就加入一个空格

 

13、数据库相关函数
addslashes($str):使str内单引号(')、双引号(")、反斜线(\)与 NUL

字符串转换为\',",\\。
magic_quotes_gpc = On 自动对 get post cookie的内容进行转义

get_magic_quotes_gpc()检测是否打开magic_quotes_gpc

stripslashes()
去除字符串中的反斜杠

13、快速创建字符串数组的函数range()

比如range()函数可以快速创建从1到9的数字数组:

<?php
$numbers=range(1,9);  
//用range直接创建1~9共9个数字组成的数组,以“1”开始“9”结束。
echo
$numbers[1];       
//输出创建的第二个数组值:2;
echo
$numbers[0];则输入第一个值:0。
?>

当然,使用range(9,1)则创建了9到1的数字数组。同时,range()还可以创建从a到z
的字符数组:

<?php
$numbers=range(a,z);
foreach ($numbers as
$mychrs)   
//遍历$numbers数组,每次循环当前单元值被赋给$mychrs
echo $mychrs."
";                   
//output a b c d e f g h i j k l m n o p q r s t u v w x y z
?>

//foreach是一种遍历数组的简便方法,foreach
仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误,它有两种格式:

foreach (array_expression as
$value)      
statementforeach (array_expression as $key =>
$value)      
statement
第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value
并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量
$key

使用字符数组时注意大小写,比如range(A,z)和range(a,Z)是不一样的。

range()函数还具有第三个参数,该参数的作用是设定步长,比如range(1,9,3)创建的数组元素是:1、4、7

 

14、常规字符串数组的排序

一般数组中的各元素均以字符或数字表现的,所以可对数组元素进行升序排列,该功能函数为sort()。比如:

<?php
$people=array('name','sex','nation','birth');
foreach ($people as $mychrs)
    
echo $mychrs." ";
sort($people);
echo "<br />---排序后---<br
/>";
foreach ($people as $mychrs)
    
echo $mychrs." ";
?>

升序排序后的数组元素显示为 birth name
nation sex,当然,sort()函数是区分字母大小写的(字母从大到小的顺序是:A…Z…a…z)

Sort()函数还具有第二参数,用来说明升序的规则是用来比较数字还是字符串的。比如:

<?php
echo "---按数字升序排序---<br />";
$num2=array('26','3',);
sort($num2,SORT_NUMERIC);
foreach ($num2 as $mychrs)
echo $mychrs." ";

echo "<br
/>---按字符升序排序---<br />";
$num3=array('26','3');
sort($num3,SORT_STRING);
foreach ($num3 as $mychrs)
    
echo $mychrs." ";
?>

SORT_NUMERIC和SORT_STRING用来声明按数字或字符的升序排列。如果按照数字升序排列是:3,26;但如果按照字符升序排列则是:26,3了。

PHP中除了升序函数以外,还有降序或称反向排列的函数,就是rsort()函数,比如:

$num1=range(1,9);
rsort($num1);               
//这里其实就相当于range(9,1)

 

15、关联数组的排序

PHP除了支持数字索引数组以外,还支持相关数组。比如如下数组就是一个相关(关联)数组:

$peoples=array('xm'=>'name','xb'=>'sex','mz'=>'nation','cs'=>'birth');

使用sort($peoples)默认即是按照元素定义值的升序排序,在关联数组中可使用asort()函数表示按元素值升序排序,关联数组中最主要的则是可按照关键字(如xm、xb、mz等)的升序排序,该方法是用函数ksort()函数。

<?php
$peoples=array('xm'=>'name','xb'=>'sex','mz'=>'nation','cs'=>'birth');

foreach ($peoples as $mychrs)
    
echo $mychrs." ";

echo "<br
/>--按元素值升序排列--<br />";
asort($peoples);
foreach ($peoples as $mychrs)
    
echo $mychrs." ";

echo "<br
/>--按关键字升序排列--<br />";
ksort($peoples);
foreach ($peoples as $mychrs)
    
echo $mychrs." ";
?>
和常规数组拥有sort()升序函数的反向排序rsort()降序函数相对应的,关联数组也有对应的降序函数:asort()函数和arsort()函数、ksort()函数和krsort()函数。
记忆:原型函数是sort(),其中a、k表示关联数组相关必须前置,反向排序使用r修饰。

 

16、数组元素随机排序

PHP中使用shuffle()函数将数组元素进行随机的重新排序,每次都会显示不同的排序组合,比如:

<?php
$fer=array('cnbruce','cnrose','cnjames','cnanne');
shuffle($fer);        
//随即排序,每刷新一次页面则进行一次随机排序。

foreach ($fer as
$mychrs)
echo $mychrs." ";
?>

 

17、PHP数组按原顺序反向排序

PHP中可使用array_reverse()函数将数组元素按原顺序反向排序。比如:

<?php
$fer=array('cnbruce','cnrose','cnjames','cnanne');
foreach ($fer as $mychrs)
echo $mychrs." ";

$fer=array_reverse($fer);    
//将数组内元素按原顺序反向排序
echo "<br
/>--按原顺序反向--<br />";
foreach ($fer as $mychrs)
echo $mychrs." ";
?>

output:   cnbruce cnrose
cnjames cnanne
              
--按原顺序反向--
             
cnanne cnjames cnrose cnbruce

注意这里的 $fer=array_reverse($fer);
在此之前的任何排序函数均只是声明引用,并没有对原有数组进行重新定义,但当我调试该函数时则需要重新定义。这是因为array_reverse()是返
回原数组修改后的副本,如果不需要原有数组,可对原数组重新定义达到覆盖的目的,否则就另外定义数组保存副本,比 如:$fer_bak=array_reverse($fer_bak);

 

时间: 2024-09-14 22:55:11

PHP的字符串函数的相关文章

Sql Server实现自定义拆分字符串函数Split()

经常我们要用到批量操作时都会用到字符串的拆分,郁闷的是SQL Server中却没有自带Split函数,所以我们只能自己动手来解决一下.为了减少和数据库的通讯次数,我们都会利用这种方法来实现批量操作.当然有时我们会借助Execute这个方法来实现,利用这个方法有一个不好的地方就是她只认识以","分割的字符串,在传IDs批量操作的时候还是可以达到目的,但是经常我们要用到更复杂的操作时我们就需要自己动手来完成了...... 1.当我们需要传入很长的字符串是我们可以借助NText和Text类型

c语言字符串函数

字符串连接函数strcat 格式:strcat(字符数组1,字符数组2) 功能:把字符数组2连到字符数组1后面 返值:返回字符数组1的首地址 说明:字符数组1必须足够大             连接前,两串均以'\0'结束;连接后,串1的'\0'取消,                新串最后加'\0'   字符串拷贝函数strcpy 格式:strcpy(字符数组1,字符串2) 功能:将字符串2,拷贝到字符数组1中去 返值:返回字符数组1的首地址 说明:字符数组1必须足够大         

Javascript实例教程(18) 使用字符串函数

javascript|函数|教程|字符串 使用javascript的字符串函数 字符串对象提供了许多方法,但是很少的程序设计人员充分利用它们,这对于一个程序员来说,不能不说这是一种缺陷.字符串提供的方法可以用于操作字符.产生HTML标签以及搜索字符串等等. 下面首先说说什么是字符串.在javascript语言中,字符串就是一种对象.就象在Java中,它们不是作为一系列的字符被存储的,所以字符串的操作必须使用内置的构造器和设置函数来完成.在后来的版本中有了字符串构造器和更多的关于对象的概念.在这个

ASP中字符串函数的应用

函数|字符串|函数|字符串 ASP中字符串函数的应用 --------------------------------------------作者:悟者来源:程序设计联盟http://www.pgsun.comEMAIL:liuyong8833@sohu.com欢迎前来学习交流!-------------------------------------------- 1. 字符串函数:Len(str):取得字符串的长度Instr(str1,str2):从字符串str1,寻找另一个字符串str2第

asp之字符串函数示例

函数|示例|字符串 asp之字符串函数示例用字符串函数对字符串进行截头去尾.大小写替换等操作. 函数 语法 功能 Len Len(string|varname) 返回字符串内字符的数目,或是存储一变量所需的字节数. Trim Trim(string) 将字符串前后的空格去掉 Ltrim Ltrim(string) 将字符串前面的空格去掉 Rtrim Rtrim(string) 将字符串后面的空格去掉 Mid Mid(string,start,length) 从string字符串的start字符开

PHP字符串函数教程:PHP字符串分割函数处理

PHP字符串函数在PHP网站开发中广泛使用,比如使用PHP字符串函数对字符串分割.截取.匹配.替换等处理.PHP字符串函数对于PHP入门学习者来说必不可少,本文将主要介绍PHP字符串分割函数处理心得,开启PHP字符串函数入门学习教程之旅. 常用的PHP字符串分割函数 常用的PHP分割字符串函数主要有explode.strtok.str_split,主要用来拆分字符串,并以数组或字符串形式返回,与这三个PHP字符串分隔函数相对应的,以分隔符连接拆分字符串的PHP字符串函数有implode.join

mysql的字符串函数

mysql|函数|字符串 注意:如果结果的长度大于服务器参数max_allowed_packet,字符串值函数返回NULL 对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL,返回NULL. mysql> select ASCII('2');         -> 50 mysql> select ASCII(2);         -> 50 mysql>

ORACLE常用数值函数、转换函数、字符串函数介绍

oracle|函数|转换|字符串 ORACLE常用数值函数.转换函数.字符串函数介绍. 数值函数: abs(m) m的绝对值 mod(m,n) m被n除后的余数 power(m,n) m的n次方 round(m[,n]) m四舍五入至小数点后n位的值(n缺省为0)trunc(m[,n]) m截断n位小数位的值(n缺省为0) -------------------------------------------------------------------------------- 字符函数:

怎样利用正则表达式把用URLEncode的字符串转换成正常的字符串函数

encode|函数|正则|转换|字符串 <script language=JavaScript RUNAT=SERVER>// 利用正则表达式把用URLEncode的字符串转换成正常的字符串函数function URLDecode(EncodeString) {  var lsRegExp = /\+/g;  return unescape(String(EncodeString).replace(lsRegExp, " ")); }</script> 使用例子

MS SQL基础教程:字符串函数

字符串函数对二进制数据.字符串和表达式执行不同的运算.此类函数作用于CHAR.VARCHAR. BINARY. 和VARBINARY 数据类型以及可以隐式转换为CHAR 或VARCHAR的数据类型.可以在SELECT 语句的SELECT 和WHERE 子句以及表达式中使用字符串函数.常用的字符串函数有: 1.字符转换函数 有以下几种字符转换函数: ·ASCII() ASCII() 函数返回字符表达式最左端字符的ASCII 码值.ASCII() 函数语法如下: 例4-40: 提醒:在ASCII()