strripos in PHP 4

MAN

Erfahrenes Mitglied
Hallo,

welche Alternative gibt es zu der Funktion int strripos( $haystack, $needle ) ?

Die Funktion ermittelt die Position des letzten Vorkommens eines Strings $needle, in einem String $haystack

Habe auf dem Server kein PHP 5, jedoch wird die Funktion nur dort unterstützt.

Ok, wäre es mein Server, dann wäre da schon längst PHP 5 drauf. Da es aber nicht meiner ist, geht das leider nicht :rolleyes:

Eine Alternative könnte auch ein Workaround sein, also keine Scheu ;)


mfG,
MAN
 
Habe mal eben meinen Kopf durchbrennen lassen und mir eine eigene strripos-Funktion geschrieben, wen's interessiert:
PHP:
function strripos( $haystack, $needle )
{
	$pos = strpos( strtolower( $haystack ), strtolower( $needle ) );

	if( $pos !== false )
	{
		$newPos = strripos( substr( $haystack, $pos + strlen( $needle ) ), $needle );

		if( $newPos >= 0 )
		{
			return ($pos + strlen( $needle ) + $newPos);
		}
		else
		{
			return $pos;
		}
	}
		
	return -1;
}
mfG,
MAN
 
Zuletzt bearbeitet:
Warum verwendest Du nicht [phpf]strrpos[/phpf]? Um die Groß- und Kleinschreibung zu vernachlässigen, wandelst Du haystack und needle mittels [phpf]strtolower[/phpf] in Kleinbuschstaben um.

snuu
 
Da strrpos() nur ein Zeichen in einem String sucht, und keinen String in einem String! ;)

mfG,
MAN
 
Eine eventuell noch performantere Lösung wäre Folgende:
PHP:
function strripos( $haystack, $needle )
{
	$haystack = strtolower( strrev( $haystack ) );
	$needle = strtolower( strrev( $needle ) );

	$pos = strpos( $haystack, $needle );

	if( $pos !== false )
	{
		return( strlen( $haystack ) - $pos - strlen( $needle ) );
	}

	return -1;
}
mfG,
MAN
 
Zurück