Here's a recursive approach using strpos() and it's offset parameter.

bvr.

<?php

function strnpos($haystack, $needle, $occurrence, $offset = 0)
{
        $pos = strpos($haystack, $needle, $offset); // find next occurrence

        if ($pos !== false) // needle found
        {
                if ($occurrence <= 1) // done
                {
                        return $pos;
                }

                return strnpos($haystack, $needle, $occurrence - 1, $pos + 1); // 
recurse
        }
}

?>

On Thu, 31 Jan 2002 00:03:23 -0800, hugh danaher wrote:

>Mike,
>Thanks for your input on this.  I'm getting better at php, but it does take
>time.
>Thanks again,
>Hugh
>
>----- Original Message -----
>From: "Mike Frazer" <[EMAIL PROTECTED]>
>To: <[EMAIL PROTECTED]>
>Sent: Wednesday, January 30, 2002 4:53 PM
>Subject: [PHP] Re: preg_replace() 'space' the final frontier
>
>
>> Okay that was quicker than I thought.  Here's the code to find the nth
>> occurrance of a string within a string:
>>
>> function strnpos($string, $search, $nth) {
>>  $count = 0;
>>  $len = strlen($string);
>>  $slen = strlen($search);
>>  for ($i = 0; $i < $len; $i++) {
>>   if (($i + $slen) > $len) { return FALSE; }
>>   if (substr($string, $i, $slen) == $search) {
>>    $count++;
>>    if ($count == $nth) { return $i; }
>>   }
>>  }
>>  if ($count != $nth) { return FALSE; }
>> }
>>
>> It returns the STARTING POINT of the nth occurrance of the string.  If you
>> are looking for the first occurrance of the word "test" and "test" covers
>> positions 10-13, the function returns 10, just like the built-in functions
>> strpos() and strrpos().  $string is the string to be searched; $search is
>> what you are searcing for; $nth is the number of the occurrance you are
>> looking for.
>>
>> Hope you all can make use of this!
>>
>> Mike Frazer
>>
>>
>>
>> --
>> PHP General Mailing List (http://www.php.net/)
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>> To contact the list administrators, e-mail: [EMAIL PROTECTED]
>>
>
>
>-- 
>PHP General Mailing List (http://www.php.net/)
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>To contact the list administrators, e-mail: [EMAIL PROTECTED]
>
>







-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to