欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

PHP stristr strstr 函数的忽略大小写版本

shiping1 的头像

stristr

(PHP 4, PHP 5)

stristr — strstr() 函数的忽略大小写版本

说明

string stristr ( string $haystack , mixed $needle [, bool $before_needle = false ] )

返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。

参数

 

haystack

在该字符串中查找。

needle

如果 needle 不是一个字符串,那么它将被转换为整型并被视为字符顺序值。

before_needle

若为 TRUEstrstr() 将返回 needle 在 haystack 中的位置之前的部分。

 

参数 needle 和 haystack 将以不区分大小写的方式对待。

返回值

返回匹配的子字符串。如果 needle 未找到,返回 FALSE

更新日志

 

版本说明
5.3.0新增可选的 before_needle 参数。
4.3.0stristr() 变为二进制安全的。

 

范例

 

Example #1 stristr() 范例

<?php
  $email 
'USER@EXAMPLE.com';
  echo 
stristr($email'e'); // 输出 ER@EXAMPLE.com
  
echo stristr($email'e'true); // 自 PHP 5.3.0 起,输出 US
?>

 

 

Example #2 测试字符串的存在与否

<?php
  $string 
'Hello World!';
  if(
stristr($string'earth') === FALSE) {
    echo 
'"earth" not found in string';
  }

// 输出: "earth" not found in string
?>

 

 

Example #3 使用非字符串 needle

<?php
  $string 
'APPLE';
  echo 
stristr($string97); // 97 = 小写字母 a
// 输出: APPLE

?>

 

注释

Note此函数可安全用于二进制对象。

参见

 

  • strstr() - 查找字符串的首次出现
  • strrchr() - 查找指定字符在字符串中的最后一次出现
  • substr() - 返回字符串的子串
  • preg_match() - 执行一个正则表达式匹配

 


 

PHP stristr note #1

Beware the example given here:

if stristr($message,'viagra')
or stristr($message,'cialis')
)
{
die();
}

stristr does not search for words, it finds matching substrings.  So, for example, the check for 'cialis' will trigger on 'specialist'

PHP stristr note #2

Use it to emulate the before_needle php V5.3 :

<?php
//$h = haystack, $n = needle 
if($pos=stripos($h,$n)) $string=substr($h,0,$pos);
?>

PHP stristr note #3

Quick way to use this with an array for a needle: 

<?php 
$arr 
= array('search_term1','search_term2','search_term3'); 

foreach(
$arr as $key => $search_needle) { 

   if(
stristr($haystack$search_needle) != FALSE) { 
        echo 
'execute this code if found'
   } 


?>

PHP stristr note #4

if stristr($message,'viagra')
or stristr($message,'cialis')
)
{
die();
}

Works quite well in any Shoutbox, Forum, Guestbook, Mailform, etcetera.

Just enter between the definitions and sending the message to the DB, et voila. ^_^

PHP stristr note #5

Active item item in menu:

<?php
function aim($page) {
    if(
stristr($_SERVER['REQUEST_URI'], $page)) {
        return 
' class="active"';
    } 
}

?>

usage:

<style type="text/css">
.active {color: red;}
</style>

<?php
print '<a href="http://example.com/page/hello-world/"'aim('hello-world') .'>HW</a>'
?>

PHP stristr note #6

Just been caught out by stristr trying to converting the needle from an Int to an ASCII value. 

Got round this by casting the value to a string. 

<?php 
if( !stristr$file, (string) $myCustomer->getCustomerID()  ) ) { 
  
// Permission denied 

?>

PHP stristr note #7

handy little bit of code I wrote to take arguments from the command line and parse them for use in my apps.

<?php

 $i 
implode(" ",$argv); //implode all the settings sent via clie
 
$e explode("-",$i); // no lets explode it using our defined seperator '-'

       //now lets parse the array and return the parameter name and its setting
       // since the input is being sent by the user via the command line
       //we will use stristr since we don't care about case sensitivity and
       //will convert them as needed later.

    
while (list($index,$value) = each($e)){

       
//lets grap the parameter name first using a double reverse string
       // to get the begining of the string in the array then reverse it again
       // to set it back. we will also "trim" off the "=" sign

     
$param rtrim(strrev(stristr(strrev($value),'=')),"=");

       
//now lets get what the parameter is set to.
       // again "trimming" off the = sign

     
$setting ltrim(stristr($value,'='),"=");

       
// now do something with our results.
       // let's just echo them out so we can see that everything is working

      
echo "Array index is ".$index." and value is ".$value." ";
      echo 
"Parameter is ".$param." and is set to ".$setting." ";

}


?>

when run from the CLI this script returns the following.

[root@fedora4 ~]# php a.php -val1=one -val2=two -val3=three

Array index is 0 and value is a.php
Parameter is  and is set to

Array index is 1 and value is val1=one
Parameter is val1 and is set to one

Array index is 2 and value is val2=two
Parameter is val2 and is set to two

Array index is 3 and value is val3=three
Parameter is val3 and is set to three

[root@fedora4 ~]#

PHP stristr note #8

You can use strstr() or stristr() to validate data! 
Check this out: 
<?php 
function validate_email($input) { 
  if (!
stristr($input'@')) { 
    return 
false
  } 
  return 
true


function 
validate_url($input) { 
  if (!
stristr($input'http://')) { 
    return 
false
  } 
  return 
true

?> 
Simple example: 
<?php 
if (!validate_email($_POST['email'])) { 
  print 
'You did not enter a valid email adress'

if (!
validate_url($_POST['url'])) { 
  print 
'You did not enter a valid url.'

?>

PHP stristr note #9

<?php 

function stristr_reverse($haystack$needle) { 
  
$pos stripos($haystack$needle) + strlen($needle); 
  return 
substr($haystack0$pos); 

$email 'USER@EXAMPLE.com'
echo 
stristr_reverse($email'er'); 
// outputs USER 

?>

PHP stristr note #10

An example for the stristr() function:

<?php
$a 
"I like php";
if (
stristr("$a""LikE PhP")) {
print (
"According to $a, you like PHP.");
}

?>

It will look in $a for "like php" (NOT case sensetive. though, strstr() is case-sensetive).

For the ones of you who uses linux.. It is similiar to the "grep" command.
Actually.. "grep -i".

PHP stristr note #11

There was a change in PHP 4.2.3 that can cause a warning message
to be generated when using stristr(), even though no message was
generated in older versions of PHP.

The following will generate a warning message in 4.0.6 and 4.2.3:
  stristr("haystack", "");
     OR
  $needle = "";  stristr("haystack", $needle);

This will _not_ generate an "Empty Delimiter" warning message in
4.0.6, but _will_ in 4.2.3:
  unset($needle); stristr("haystack", $needle);

Here's a URL that documents what was changed:
http://groups.google.ca/groups?selm=cvshholzgra1031224321%40cvsserver

来自 http://www.php100.com/cover/php/2233.html

普通分类: