note 79347 added to function.strstr
| From: | prafe at prafesplace dot com | Date: | Thu, 22 Nov 2007 05:14:39 +0000 |
| Subject: | note 79347 added to function.strstr | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-132477@lists.php.net to get a copy of this message | ||
If you want to use the $before_needle parameter that's only in PHP 6.0, I found a way to use it
in lower versions.
The code is a bit hefty, but it works. It also has added $include_needle and $case_sensitive.
<?php
// ==== I don't guarantee this is faster than the PHP 6 before needle, ====
// ==== but it works for PHP below 6 atleast. ====
// ==== IT ALSO HAS INCLUDE NEEDLE BOOLEAN.. ====
function strstrbi($haystack,$needle,$before_needle,
$include_needle,$case_sensitive)
{
$strstr = ($case_sensitive) ? 'strstr' : 'stristr';
if($before_needle!=true && $before_needle!=false &&
isset($before_needle)){
die('PHP: Error in function '.chr(39).'$strstrbi'.
chr(39).'
: parameter '.
chr(39).'$before_needle'.chr(39).' is
not a supplied as a boolean.');
} // END BOOLEAN CHECK '$before_needle'
if($include_needle!=true && $include_needle!=false &&
isset($include_needle)){
die('PHP: Error in function '.chr(39).'$strstrbi'.
chr(39).' : parameter '.
chr(39).'$include_needle'.chr(39).
' is not a supplied as a boolean.');
} // END BOOLEAN CHECK '$include_needle'
if($case_sensitive!=true && $case_sensitive!=false &&
isset($case_sensitive)){
die('PHP: Error in function '.chr(39).'$strstrbi'
.chr(39).' : parameter '.
chr(39).'$case_sensitive'.chr(39).'
is not a supplied as a boolean.');
} // END BOOLEAN CHECK '$case_sensitive'
if(!isset($before_needle))
{
$before_needle=false;
}
if(!isset($include_needle))
{
$include_needle=true;
}
if(!isset($case_sensitive))
{
$case_sensitive=false;
}
switch($before_needle)
{
case true:
switch($include_needle)
{
case true:
$temp=strrev($haystack);
$ret=strrev(substr($strstr($temp,$needle),0));
break;
// END case true : $include_needle
case false:
$temp=strrev($haystack);
$ret=strrev(substr($strstr($temp,$needle),1));
break;
// END case false : $include_needle
}
break;
// END case true : $before_needle
case false:
switch($include_needle)
{
case true:
$ret=$strstr($haystack,$needle);
break;
// END case true: $include_needle
case false:
$ret=substr($strstr($haystack,$needle),1);
break;
// END case false: $include_needle
}
break;
// END case false : $before_needle
}
if(!empty($ret)){
return $ret;
}else{
return false;
}
}
// === END FUNCTION 'strstrbi'
// Example
$email = 'user@example.com';
$domain = strstrbi($email, '@', false, false, false);
echo $domain; // prints example.com
$user = strstrbi($email, '@', true, false, false);
echo $user; // prints user
?>
----
Server IP: 64.71.164.2
Probable Submitter: 68.62.211.94
----
Manual Page -- http://www.php.net/manual/en/function.strstr.php
Edit -- https://master.php.net/note/edit/79347
Del: integrated -- https://master.php.net/note/delete/79347/integrated
Del: useless -- https://master.php.net/note/delete/79347/useless
Del: bad code -- https://master.php.net/note/delete/79347/bad+code
Del: spam -- https://master.php.net/note/delete/79347/spam
Del: non-english -- https://master.php.net/note/delete/79347/non-english
Del: in docs -- https://master.php.net/note/delete/79347/in+docs
Del: other reasons-- https://master.php.net/note/delete/79347
Reject -- https://master.php.net/note/reject/79347
Search -- https://master.php.net/manage/user-notes.php