String function

首先说说函数名的一些规则,如果在str后面有i的,一般直大小写不敏感,有r的,一般指从尾部开始。两个同时出现,一般是r在前,i在后。

 

1.strpos($hayback, $needle, [$offset = 0])系列,寻找指定字符串的位置。

 

在$hayback中找到第一个出现$needle的位置。

 

$offset是指定从某个位置开始搜索(注意了,string是zero-base的)。

 

可以推断出以下几个函数的用途:

stripos:不区分大小写进行匹配。

strrpos:从尾部开始进行匹配。

strripos:从尾部开始进行匹配,并且不区分大小写。

 

以后的字符串函数,以此类推。

 

==============================================================

2.strtr($hayback, $from, $to),strtr($hayback, $array)对字符串进行翻译。

对$hayback所有找到的$from, 均翻译成$to.

如果需要翻译多个,可以传递数组到第二个参数。

数组形如:

$array = array(

    'from_1' => 'to_1',

    'from_2' => 'to_2'

)

 

这个函数没有不区分大小写的版本。。。

但它有几个要注意的地方:

1)对于第一种参数形式,可能会有不符合本意的情况出现:例如

echo strtr("I Love you", "Lo", "lO");

我们希望是 I lOve you

但是输出是 I lOve yOu

要想达到希望的结果,就要改成第二种形式,即echo strtr("I Love you",array("Lo" => "lO"));

 

2)还是针对第一中参数形式,第三个参数不能为空,当然可以为空格。

例如

echo strtr("I Love you", "Lo", "");

会输出I Love you  没有任何变化

但是

echo strtr("I Love you",array("Lo" => ""));

则会达到我们要的结果:I ve you

 

所以,用第一种形式的朋友们,要留心了。

 

3.strcmp,strcasecmp字符串比较(又是被人诟病的php命名方式,怎么看都觉得strcasecmp才是大小写敏感,怎么就不和别的函数一样用i,变成stricmp呢?命名方式混乱!!)


对两个字符串进行逐位比较,当该位相同时,才取下一位进行,直到不同才返回结果。

 

第一比第二小,则返回-1,大于则返回1,完全相同则返回0

 

值得注意的是,小写字母是比大写字母要大的,这点很多程序员可能会记混。

 

4.strstr($hayback, $needle, [$before = false])可以理解为字符串截取的一种方法

在$hayback中,找到第一个出现$needle的位置,返回从该位置到结尾的部分(当然拉,包含$needle本身,因为位置是$needle的第一个字符的偏移值)。

当$before为true,则返回从该位置到开头的部分(不包含$needle本身,原因你懂的)。

 

该系列其它函数名自己推敲。不过呢,没有逆向的函数。

 

5.strspn($hayback, $mask, [$start], [$length])和strcspn($hayback, $mask, [$start], [$length]),白名单和黑名单。

strspn 就是在$hayback中,返回第一个在$mask以外的字符的位置

strspn 就是在$hayback中,返回第一个在$mask内出现的字符的位置。

 

$start为正数时, 从$start所指的位置开始搜索,结果是以$start为0开始计算,负数则是从strlen($hayback) + $start的位置开始

 

没有逆序版本,没有不区分大小写版本

 

6.str_replace( mixed $search , mixed $replace , mixed $subject [, int &$count ])字符串替换

 

把$subject中的$search替换成$replace. $count返回成功替换的个数

 

这个最是合用来做敏感词替换了。。。但是速度会是strtr的1/4

 

有不区分大小写的版本 str_ireplace

 

脏词替换例子:

 

$dirty_word = array('脏话', '悲剧');//为了文明起见,大家知道这是脏话就好

 

$sentence = '我脏话你!你个悲剧!';

 

echo str_replace($dirty_word, '敏感词', $sentence);//我敏感词你!你个敏感词!

 

 

这里有个问题要注意,匹配时不是贪婪的,所以

 

$dirty_word = array('脏话', '脏话2' );//为了文明起见,大家知道这是脏话就好

 

$sentence = '我脏话你!你个脏话2!';

 

echo str_replace($dirty_word, '敏感词', $sentence);//我敏感词你!你个敏感词2!

 

会依然匹配数组中的第一个,所以如果有些词之间,一个词是另一个词的前半部分,则应该把长的放前面,短的放后面才能得到希望的结果

 

 

7.substr_replace (mixed $string , string $replacement , int $start [, int $length ])

将$start起,长度为$length的部分替换成$replacement,注意,$start所指的字符也会被替换。

 

8.substr (mixed $string ,int $start [, int $length ])

就是截取从$start开始,长度为$length的部分

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值