| // | Stephan Schmidt | // +----------------------------------------------------------------------+ // // $Id: strripos.php,v 1.2 2007-01-18 09:02:28 kostja Exp $ // /** * Replace strripos() * * @category PHP * @package PHP_Compat * @link http://php.net/function.strripos * @author Aidan Lister * @author Stephan Schmidt * @version $Revision: 1.2 $ * @since PHP 5 * @require PHP 4.0.1 (trigger_error) */ if (!function_exists('strripos')) { function strripos ($haystack, $needle, $offset = null) { if (!is_scalar($haystack)) { trigger_error('strripos() expects parameter 1 to be scalar, ' . gettype($haystack) . ' given', E_USER_WARNING); return false; } if (!is_scalar($needle)) { trigger_error('strripos() expects parameter 2 to be scalar, ' . gettype($needle) . ' given', E_USER_WARNING); return false; } if (!is_null($offset) && !is_numeric($offset)) { trigger_error('strripos() expects parameter 3 to be long, ' . gettype($offset) . ' given', E_USER_WARNING); return false; } // Manipulate the string if there is an offset $fix = 0; if (!is_null($offset)) { // If the offset is larger than the haystack, return if (abs($offset) >= strlen($haystack)) { return false; } // Check whether offset is negative or positive if ($offset > 0) { $haystack = substr($haystack, $offset, strlen($haystack) - $offset); // We need to add this to the position of the needle $fix = $offset; } else { $haystack = substr($haystack, 0, strlen($haystack) + $offset); } } $segments = explode(strtolower($needle), strtolower($haystack)); $last_seg = count($segments) - 1; $position = strlen($haystack) + $fix - strlen($segments[$last_seg]) - strlen($needle); return $position; } } ?>