SYNOPSIS
        int strstr(string str, string str2)
        int strstr(string str, string str2, int pos)
        int strstr(bytes  str, bytes  str2)
        int strstr(bytes  str, bytes  str2, int pos)

DESCRIPTION
        Returns the index of <str2> in <str> searching from position <pos>
        on forward.

        The returned index is relativ to the beginning of the string.
        If <str2> is not found in <str>, -1 is returned.

        If <pos> is negativ, it designates the start position relative
        to the end of the string (the search will still proceed towards
        the end of the string).

SEE ALSO
        strrstr(E), strlen(E), sscanf(E), sprintf(E), explode(E)
