[Tutorial] Desbugar o derrubamento do servidor pelo comando [%s]
#3

Soluзгo mais prбtica

PHP код:
strreplace(inputtext"%s""#", .maxlength 128);

strreplace(string[], const search[], const replacement[], bool:ignorecase falsepos 0limit = -1maxlength sizeof(string))
{
    
// No need to do anything if the limit is 0.
    
if (limit == 0)
        return 
0;
    
    new
        
sublen strlen(search),
        
replen strlen(replacement),
            
bool:packed ispacked(string),
        
maxlen maxlength,
        
len strlen(string),
        
count 0
    
;
    
    
    
// "maxlen" holds the max string length (not to be confused with "maxlength", which holds the max. array size).
    // Since packed strings hold 4 characters per array slot, we multiply "maxlen" by 4.
    
if (packed)
        
maxlen *= 4;
    
    
// If the length of the substring is 0, we have nothing to look for..
    
if (!sublen)
        return 
0;
    
    
// In this line we both assign the return value from "strfind" to "pos" then check if it's -1.
    
while (-!= (pos strfind(stringsearchignorecasepos))) {
        
// Delete the string we found
        
strdel(stringpospos sublen);
        
        
len -= sublen;
        
        
// If there's anything to put as replacement, insert it. Make sure there's enough room first.
        
if (replen && len replen maxlen) {
            
strins(stringreplacementposmaxlength);

            
pos += replen;
            
len += replen;
        }
        
        
// Is there a limit of number of replacements, if so, did we break it?
        
if (limit != -&& ++count >= limit)
            break;
    }
    
    return 
count;

Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)