1 |
string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] ) |
..
1 2 3 4 5 6 7 |
$email = 'name@example.com'; $domain = strstr($email, '@'); echo $domain; // prints @example.com $user = strstr($email, '@', true); // As of PHP 5.3.0 echo $user; // prints name ?> |
..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
// ==== 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 ?> |