Uitwerking

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
# Custom strpos
function myStrpos( $Haystack, $Needle )
{

    # Matches array
    $Matches = array( );
    
    # Lowercase both $Haystack & $Needle
    $Needle = strtolower( $Needle );
    $Haystack = strtolower( $Haystack );

        # Lengt needle
        $Length = strlen( $Needle ) - 1;
    
    # Loop through string
    for( $i = 0; $Haystack{$i}; $i++ )
    {

        # Save start position
        $Start = $i;
    
        # (*1)
        for( $j = 0; $Haystack{$i+$j} == $Needle{$j}; $j++ )
        {

            # Match has been found if $j reaches strlen-1
            if( $Length == $j )
            {
            
                # Save start pos
                $Matches[] = $Start;
                break;
            }
        }        
    }

    
    # Return array
    return $Matches;
}

?>


Je ziet 2 sterretjes in de comments, hieronder de verklaring ;)
*1 Zoals je ziet hoeft een for() loop niet altijd een $i<getal te hebben, je kunt alle true/false expressies gebruiken die je wilt, en dat biedt uitkomst in onze functie.

*2 Je vraagt je vast af waarom ik een lege array teruggeef als er geen matches zijn. Dat is om de doodsimpele reden dat een nette functie maar 1 return type mag hebben. Er wordt nu dus te allen tijde een array teruggegeven.
if( count( $array ) > 0 ) zou je bijv. als "check" op matches kunnen gebruiken.

Succes ermee, en post hier je eigen PHPlib verbeteringen!

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Intro
  2. Theorie
  3. Uitwerking

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.