php strstr批量替换,php中常用字符串处理函数的知识总结

1、字符串长度函数

strlen获取字符串长度

int strlen ( string $string )

成功则返回字符串string的长度;如果string为空,则返回0。

mb_strlen获取字符串长度,多字节支持,支持中文

int mb_strlen ( string $str [, string $encoding ] )

encoding参数为字符编码。如果省略,则使用内部字符编码。

$str = '中国,你好';

echo strlen($str);//15

echo mb_strlen($str,'utf-8');//5

2、字符串查找函数

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';

echo stripos($strr1,$strr2);#1

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

$strr1 = 'abcdefag';

$strr2 = 'a';

echostrrpos($strr1,$strr2);#6

strrchr—查找指定字符在字符串中的最后一次出现,返回的是从该查找字符开始到字符串最后位置之间的字符(包括了该查找字符)

string strrchr ( string$haystack , mixed $needle )

$strr1 = 'Abcdefag';

$strr2 = 'd';

echo strrchr($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中的字符个数为准,其余的将被保留

echo strtr("xcroom","xc","u");#ucroom

支持数组替换xcroomstring

$str = array('xc'=>'cx','om'=>'mo');

echo strtr("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),'
';#bbo

//从开头位置替换,替换3个字符

echosubstr_replace($str,'bbo',0,3),'
';#bbolo world

//从字符串的倒数第几个字符开始替换,当第三个指定了为负数时,第四个参数为0时,代表的是将bbo插入至倒数第三个位置上,替换0个

echosubstr_replace($str,'bbo',-3,0),'
';#hello wobborld

echosubstr_replace($str,'bbo',-3,1),'
';#hello wobbold,替换1个

echosubstr_replace($str,'bbo',-3,2),'
';#hello wobbod,替换2个

echosubstr_replace($str,'bbo',-3,3),'
';#hello wobbo,替换3个

echosubstr_replace($str,'bbo',-3,4),'
';#hello wobbo,替换3个

echosubstr_replace($str,'bbo',-3,-1),'
';#hello wobbod,替换从尾部开始的1,3个字符

echosubstr_replace($str,'bbo',-3,-2),'
';#hello wobbold

//如果有10个词需要进行替换,可以用数组做参数,批量替换

$cont = 'abcde hello world';

$old =array('a','b','c','d','e');

$new = array('A','B','C','D','E');

echo str_replace($old,$new,$cont),'
'; // 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位置开始直到字符串结尾。

例子:

$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');

echo implode($a,'|');   //分隔符为指定的字符串a|b|c|d|e|f|g

echo implode($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';

echo strtolower($str); #HELLOWORLD

strtoupper($str)字符串转换为大写

$str = 'hello world';

echo strtoupper($str);#helloworld

ucfirst($str)将字符串的第一个字符转换为大写

$str = 'hello world';

echo ucfirst($str);# Helloworld

ucwords($str)将每个单词的首字母转换为大写

$str = 'hello world';

echo ucwords($str);#HelloWorld

空白处理函数

trim:去除字符串首尾处的空白字符(或者其他字符)

string trim ( string $str [,string $charlist ] )

ltrim:去除字符串首处的空白字符(或者其他字符)

string ltrim ( string $str [,string $charlist ] )

rtrim:去除字符串尾处的空白字符(或者其他字符)

string rtrim ( string $str [,string $charlist ] )

//空白字符处理函数

$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 ]] )

$input = "Alien";

echo str_pad($input,10);                      //输出"Alien     "

echo str_pad($input, 10,"-=", STR_PAD_LEFT);  //输出"-=-=-Alien"

echo str_pad($input, 10,"_", STR_PAD_BOTH);   //输出"__Alien___"

echo str_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注入***

例子:

//字符串转义函数

$str = "abdc'ji*-";

echo addslashes($str),'
';#abdc\'ji*-

$str ="abdc'\ji*-";

echo addslashes($str),'
';#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("Test",ENT_QUOTES);echo$new;// <ahref='test'>Test</a>?>

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

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

echohtmlspecialchars_decode($new1);//Test

htmlentities将字符串中所有可转换字符转换为HTML实体

string htmlentities(string$string)

$str = "this is'xcroom'";

echo htmlentities($str);//this is 'xcroom'

html_entity_decodehtmlentities ()函数的反函数,将HTML实体转换为字符

$str = "this is'xcroom'";

$str1 = htmlentities($str);//this is 'xcroom'

echo html_entity_decode($str1);//this is 'xcroom'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值