在前一篇文章中我们了解了php中的字符串想要完成替换字符的操作需要使用到php提供的substr_replace 函数与 str_replace 函数,这样就能够解决php替换的问题,同样的在php的开发过程中字符串的定位也是很常见的。
在php中想要搜索字符串在另一个字符串中是否出现,可以通过php中的strstr函数,接下来我们就来看一下怎样去定位查找一个字符串。
strstr函数-定位字符串元素
在php中可以通过strstr函数来搜索一个字符串在另一个字符串中的第一次出现,strstr函数的基本语法格式如下:
strstr(string,search,before_search)
其中需要注意的是:参数string表示的是需要搜索的字符串,参数search表示的是被搜索的字符串,如果该参数不是一个字符串那么这个参数就会被转化为整型并且作为字符的序号来使用,参数before_search默认的是false,如果设置为true的话,返回的结果就是参数search第一次出现之前的那部分字符串。
该函数的返回结果是从匹配点开始的字符串的剩余部分,如果未找到需要搜索的字符串,那么返回的结果就是flase。
接下来我们通过示例来看一下strstr函数的使用,示例如下:
<?php$email = '123456789123456789@gamil.com';echo $email. '<br/>';//正常输出$domain = strstr($email, '@');//通过strstr函数来搜索@出现的第一次位置echo $domain;?>
输出结果:
在上述示例中,通过strstr函数返回的结果就是我们搜索的字符串之后剩余的部分。我们通过strstr函数完成了定位字符串的目的。
提到定位匹配在php中就不得不提到正则表达式了,在上文中我们通过strstr函数完成了定位字符串,在php中还有一个函数是preg_grep()函数,接下来我们一起来看一下它的用法。
preg_grep()函数-定位数组元素
在php中提到搜索定位,绕不过去的肯定就是正则表达式了,php就提供了 preg_grep() 通过正则表达式来进行匹配数组元素。
preg_grep()函数的基本语法格式如下:
array preg_grep ( string $pattern , array $input [, int $flags = 0 ] )
其中需要注意的是:参数pattern是用正则表达式来定义的,也就是要搜索的模式,参数input表示的是要搜索的数组,参数flags一般设置为preg_grep_invert表示的是这时候的函数返回的结果是不匹配的 $pattern 元素所组成的数组。
接下来我们通过示例来看一下preg_grep()函数的使用,示例如下:
<?php$pattern = '/[0-9]/';$subject = array('weuy','r3ui','76as83','s','0ck9');$arr = preg_grep($pattern,$subject);show($arr);function show($var){ if(empty($var)){ echo 'null'; }elseif(is_array($var)||is_object($var)){ echo ''; print_r($var); echo ''; }else{ echo $var; }}echo '<br/>';$arr1 = preg_grep($pattern,$subject,preg_grep_invert);show($arr1);function show1($var1){ if(empty1($var1)){ echo 'null'; }elseif(is_array($var1)||is_object($var1)){ echo ''; print_r($var1); echo ''; }else{ echo $var1; }}?>
输出结果:
通过上述示例我们可以匹配到数组元素,并且参数flags的值不同,preg_grep()函数返回的结果也不同。
大家如果感兴趣的话,可以点击《php视频教程》进行更多关于php知识的学习。
以上就是php中怎样去定位字符串与数组中的元素?的详细内容。
