您的位置:首页 > 编程语言 > PHP开发

php中常用字符串处理函数的知识总结

2015-05-11 15:33 881 查看
1、字符串长度函数
strlen获取字符串长度
int strlen ( string $string ) 成功则返回字符串string的长度;如果string为空,则返回 0。
mb_strlen获取字符串长度,多字节支持,支持中文
int mb_strlen ( string $str [,string $encoding ] )
encoding 参数为字符编码。如果省略,则使用内部字符编码。$str ='中国,你好';echostrlen($str);//15echomb_strlen($str,'utf-8');//52、字符串查找函数
strpos查找字符串首次出现的位置
int strpos ( string $haystack ,mixed$needle [,int $offset =0 ] )返回 needle 在 haystack 中首次出现的数字位置。
===全等号的做作,当使用strpos查找第一个字符的位置(即0)的时候,用于if判断时,会被if判断为假。
例子:应这样来判断
$str1 ='abcdefg';
$str2 ='a';

if(strpos($str1,$str2) !==false){
echo'有a';
}else{
echo'没有a';
}
stripos查找字符串首次出现的位置(不区分大小写)

$strr1 ='Abcdefag';
$strr2 ='a';
echostripos($strr1,$strr2);#1

strrpos()计算指定字符串在目标字符串中最后一次出现的位置

$strr1 ='abcdefag';
$strr2 ='a';
echostrrpos($strr1,$strr2);#6

strrchr—查找指定字符在字符串中的最后一次出现,返回的是从该查找字符开始到字符串最后位置之间的字符(包括了该查找字符)
string strrchr ( string$haystack ,mixed $needle )
$strr1 ='Abcdefag';
$strr2 ='d';
echostrrchr($strr1,$strr2);#defag

strstr查找指定字符在字符串中第一次出现的位置,返回的是从该查找字符开始到字符最后位置之间的字符strstr($str1,$str2)(包括了该查找字符)
$strr1 ='Abcdefag';
$strr2 ='b';
echostrstr($strr1,$strr2);#bcdefag

stristr查找指定字符在字符串中第一次出现的位置,返回的是从该查找字符开始到字符最后位置之间的字符,忽略大小写
string stristr ( string$haystack ,mixed $needle [,bool $before_needle =false ] )
返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。

字符串替换函数

str_replace:子字符串替换函数,从$str中查找 search用replace来替换
str_replace(search,replace,$str)

$str ='hello world';
echostr_replace('ll','LL',$str);#heLLo world

str_ireplace: 子字符串替换函数,从$str中查找 search用replace来替换,忽略大小写
str_irreplace(search,replace,$str):

$str ='helLo woRld';
echostr_ireplace('ll','wencheng',$str);

strtr—转换指定字符,在$str中查找search用replace来替换
strtr($str,search,replace)当replace中字符的个数大于search中的字符个数时,与search中的字符个数为准,其余的将被截取掉
echostrtr("xcroom","xc","op1234");#oproom
当replace中字符的个数小于search中的字符个数时,与replace中的字符个数为准,其余的将被保留
echostrtr("xcroom","xc","u");#ucroom
支持数组替换xcroomstring
$str =array('xc'=>'cx','om'=>'mo');
echostrtr("xcroomstring",$str);#cxromostring

substr_replace:替换字符串的子串

substr_replace($Str,$replacement,$start[,length])
$str原始字符串,$rep替换后的新字符串,$start起始位置,$length替换的长度,该项可选

参数
str:输入的字符串。
replacement:替换的字符串。
start
如果 start 为正数,替换将从 string 的 start 位置开始。
如果 start 为负数,替换将从 string 的倒数第 start 个位置开始。
length
如果设定了这个参数并且为正数,表示 string 中被替换的子字符串的长度。如果设定为负数,它表示待替换的子字符串结尾处距离 string 末端的字符个数。如果没有提供此参数,那么它默认为 strlen( string ) (字符串的长度)。当然,如果 length 为 0,那么这个函数的功能为将 replacement 插入到 string 的 start 位置处。
例子:
$str ='hello world';
//从开头位置替换,替换全部
echosubstr_replace($str,'bbo',0),'<br />';#bbo

//从开头位置替换,替换3个字符
echosubstr_replace($str,'bbo',0,3),'<br />';#bbolo world

//从字符串的倒数第几个字符开始替换,当第三个指定了为负数时,第四个参数为0时,代表的是将bbo插入至倒数第三个位置上,替换0个
echosubstr_replace($str,'bbo',-3,0),'<br />';#hello wobborld
echosubstr_replace($str,'bbo',-3,1),'<br />';#hello wobbold,替换1个
echosubstr_replace($str,'bbo',-3,2),'<br />';#hello wobbod,替换2个
echosubstr_replace($str,'bbo',-3,3),'<br />';#hello wobbo,替换3个
echosubstr_replace($str,'bbo',-3,4),'<br />';#hello wobbo,替换3个
echosubstr_replace($str,'bbo',-3,-1),'<br />';#hello wobbod,替换从尾部开始的1,3个字符
echosubstr_replace($str,'bbo',-3,-2),'<br />';#hello wobbold

//如果有10个词需要进行替换,可以用数组做参数,批量替换
$cont ='abcde hello world';
$old =array('a','b','c','d','e');
$new=array('A','B','C','D','E');
echostr_replace($old,$new,$cont),'<br />';// ABCDE hEllo world

截取子字符函数
substr返回字符串的子串
substr($str,int start[,intlength]):从$str中strat位置开始提取[length长度的字符串]。

参数
string:输入字符串。
start
如果 start 是非负数,返回的字符串将从 string 的 start 位置开始,从 0 开始计算。
例如,在字符串“abcdef”中,在位置 0 的字符是“a”,位置 2 的字符串是“c”等等。
如果 start 是负数,返回的字符串将从 string 结尾处向前数第 start 个字符开始。
如果 string 的长度小于或等于 start,将返回 FALSE。
length
如果提供了正数的 length,返回的字符串将从 start 处开始最多包括 length 个字符(取决于 string 的长度)。

如果提供了负数的 length,那么 string 末尾处的许多字符将会被漏掉,漏掉-n个(若 start 是负数则从字符串尾部算起)。如果 start 不在这段文本中,那么将返回一个空字符串。

如果提供了值为 0,FALSE 或 NULL 的 length,那么将返回一个空字符串。

如果没有提供 length,返回的子字符串将从 start 位置开始直到字符串结尾。
例子:
<?php
$rest =substr("abcdef",-1); # 返回 "f"
$rest =substr("abcdef",-2); # 返回 "ef"
$rest =substr("abcdef",-3,1);# 返回 "d"
$rest =substr("abcdef",0,-1); # 返回 "abcde"
$rest =substr("abcdef",2,-1); # 返回 "cde"
$rest =substr("abcdef",4,-4); # 返回 ""
$rest =substr("abcdef",-3,-1);# 返回 "de"
?>

分割,连接,反转函数
分割函数:
str_split将字符串转换为数组(字符到数组)
str_split($str,len):把$str按len长度进行分割返回数组
$str ='0123456789';
print_r(str_split($str,3));
//Array ( [0] =>012 [1] =>345 [2] =>678 [3] =>9 )

$str ='0123456789';
print_r(str_split(strrev($str),3));//strrev()为字符串反转函数
Array ( [0] =>987 [1] =>654 [2] =>321 [3] =>0 )

split—用正则表达式将字符串分割到数组中
array split ( string $pattern,string $string [,int $limit ] )

explode—使用一个字符串分割另一个字符串,分割的字符可以为空格和其他标点符号类的字符
array explode ( string$separator ,string $string [,int $limit ] )、

$str ="ab:cd:ef:gh";
print_r(explode(':',$str));
Array ( [0] =>ab [1]=>cd [2] =>ef [3] =>gh )

implode—— 将数组用特定的分割符转变为字符串(数组到字符)

$a =array('a','b','c','d','e','f','g');
echoimplode($a,'|'); //分隔符为指定的字符串a|b|c|d|e|f|g
echoimplode($a); //直接转化成字符串 abcdefg

字符串比较函数
strcmp:二进制安全字符串比较
int strcmp ( string $str1 ,string $str2 )

返回值
如果 str1 小于 str2,返回负数;如果 str1 大于 str2,返回正数;二者相等则返回 0。

strcasecmp—二进制安全比较字符串(不区分大小写)
int strcasecmp ( string $str1,string $str2 )

返回值
如果 str1 小于 str2,返回负数;如果 str1 大于 str2,返回正数;二者相等则返回 0。

字符串转换函数:
strtolower($str)字符串转换为小写
$str ='HELLO WORLD';
echostrtolower($str);#HELLOWORLD

strtoupper($str)字符串转换为大写
$str ='hello world';
echostrtoupper($str);#helloworld

ucfirst($str)将字符串的第一个字符转换为大写
$str ='hello world';
echoucfirst($str);# Helloworld

ucwords($str)将每个单词的首字母转换为大写
$str ='hello world';
echoucwords($str);#HelloWorld

空白处理函数
trim:去除字符串首尾处的空白字符(或者其他字符)
string trim ( string $str [,string $charlist ] )

ltrim:去除字符串首处的空白字符(或者其他字符)
string ltrim ( string $str [,string $charlist ] )

rtrim:去除字符串尾处的空白字符(或者其他字符)
string rtrim ( string $str [,string $charlist ] )

<?php
//空白字符处理函数
$text ="\t\tThese are a few words :)... ";
$binary ="\x09Examplestring\x0A";
$hello ="Hello World";

var_dump($text);

$textd =trim($text);
var_dump($textd);#
/*
string(32) " These are a few words :) ... "
string(28) "These are afew words :) ..."
*/

$binaryd =trim($binary,"\x00..\x1f");
var_dump($binaryd);
//string(14) "Examplestring"

$trimmed =trim($hello,"Hdle");
var_dump($trimmed);
//string(5) "o Wor"

?>

chunk_split—将字符串分割成小块

string chunk_split ( string$body [,int $chunklen [,string $end ]] )

$str ='abcdefghijk';
#将$str按两个字符以指定的格式进行分割
echochunk_split($str,2,"/");
ab/cd/ef/gh/ij/k/

str_pad—使用另一个字符串填充字符串为指定长度

string str_pad ( string$input ,int $pad_length [,string $pad_string =" " [,int $pad_type=STR_PAD_RIGHT ]] )

<?php
$input ="Alien";
echostr_pad($input,10); // 输出 "Alien "
echostr_pad($input,10,"-=",STR_PAD_LEFT); // 输出"-=-=-Alien"
echostr_pad($input,10,"_",STR_PAD_BOTH); // 输出"__Alien___"
echostr_pad($input,6 ,"___"); // 输出 "Alien_"
?>

字符串转义函数;
为什么需要转义:
如果用户发布的内容,直接显示在页面上,那么用户可能发布带有html代码,甚至js代码的内容.当用户浏览内容时,也可能引来攻击. XSS攻击

addslashes:使用反斜线引用字符串
string addslashes ( string$str )

返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。
注:
在使用addslashes请注意,系统有一个魔术引号的选项,如果该选项开启,则会自动把$_GET,$_POST,$_COOKIE,$_SESSION中的数据,自动转义.
不过该选项,在PHP5.0以上已经默认关闭.
试想如下场景:
如果魔术引号开启,$_POST过来的值,自动转义,但我们不知道魔术引号已开启,还手动转了一次.
后果:'=>\'==>\\\',重复转义了.
解决魔术引号的问题
如何解决?
答:判断一下当前的环境,魔术引号是否开启.
如果开启,则不手动addslashes,如没开启,再addsalashes
如何判断当前魔术引号是否开启??????
get_magic_quotes_gpc()函数来判断,可以用合理的转义来避免sql注入攻击

例子:
<?php
//字符串转义函数
$str ="abdc'ji*-";
echoaddslashes($str),'<br/>';#abdc\'ji*-

$str ="abdc'\ji*-";
echoaddslashes($str),'<br/>';#abdc\'\\ji*-
//验证魔术引号是否开启,用get_magic_quotes_gpc()函数进行判断
if(get_magic_quotes_gpc()){
echo"魔术引号已开启";
}else{
echo"魔术引号未开启";
}
?>

stripslashes:字符的反转义,反引用一个字符串
返回一个去除转义反斜线后的字符串(\' 转换为 ' 等等)。双反斜线(\\)被转换为单个反斜线(\)。

htmlspecialchars — Convertspecial characters to HTML entities
将字符串中一些字符转换为HTML实体
<?php

$new
=
htmlspecialchars
(
"<ahref='test'>Test</a>"
,
ENT_QUOTES
);

echo
$new
;
// <ahref='test'>Test</a>

?>


htmlspecialchars_decode():将html实体转换成字符

$new1 ="<ahref='test'>Test</a>";
echohtmlspecialchars_decode($new1);//<ahref='test'>Test</a>

htmlentities 将字符串中所有可转换字符转换为HTML实体
string htmlentities(string$string)
$str ="this is'<b>xcroom</b>'";
echohtmlentities($str);//this is '<b>xcroom</b>'
html_entity_decode htmlentities ()函数的反函数,将HTML实体转换为字符 $str ="this is'<b>xcroom</b>'";
$str1 =htmlentities($str);//this is '<b>xcroom</b>'
echohtml_entity_decode($str1);//this is 'xcroom'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息