PHP內建字串函式實現

Sinkiang發表於2018-08-23

1.獲取字串長度

function strlen($str)
{
    if ($str == '') {
        return 0;
    }
        $count = 0;
        while (1){
            if ($str[$count] != NULL) {
                $count++;
                continue;
            } else {
                break;
            }
        }
        return $count;
}
複製程式碼

2.擷取字串

function substr($str, $start, $length=NULL)

{
    if ($str=='' || $start>strlen($str)) return;
    if (($length!=NULL) && ($start>0) && ($length>strlen($str)-$start)) return;
    if (($length!=NULL) && ($start<0) && ($length>strlen($str)+$start)) return;
    if ($length == NULL) $length = (strlen($str) - $start);
    if ($start < 0){
        for ($i=(strlen($str)+$start); $i<(strlen($str)+$start+$length); $i++) {
            $substr .= $str[$i];
        }
    }
    if ($length > 0){
       for ($i=$start; $i<($start+$length); $i++) {
            $substr .= $str[$i];
        }
    }
    if ($length < 0){
        for ($i=$start; $i<(strlen($str)+$length); $i++) {
            $substr .= $str[$i];
        }
    }
    return $substr;
}
複製程式碼

3.字串翻轉

function strrev($str)
{
    if ($str == '') return 0;
    for ($i=(strlen($str)-1); $i>=0; $i--){
        $rev_str .= $str[$i];
    }
    return $rev_str;
}
複製程式碼

4.字串比較

function strcmp($s1, $s2)
{
    if (strlen($s1) < strlen($s2)) return -1;
    if (strlen($s1) > strlen($s2)) return 1;
    for ($i=0; $i<strlen($s1); $i++){
        if ($s1[$i] == $s2[$i]){
           continue;
        } else { 
            return false;
        }
    }
   return 0;
}
複製程式碼

5.查詢字串

function strstr($str, $substr)
{
    $m = strlen($str);
    $n = strlen($substr);
    if ($m < $n) return false;
    for ($i=0; $i<=($m-$n+1); $i++){
        $sub = substr($str, $i, $n);
        if (strcmp($sub, $substr) == 0)  return $i;
    }
   return false;
}
複製程式碼

6.字串替換

function str_replace($substr, $newsubstr, $str)
{
    $m = strlen($str);
    $n = strlen($substr);
    $x = strlen($newsubstr);
    if (strchr($str, $substr) == false) return false;
    for ($i=0; $i<=($m-$n+1); $i++){
        $i = strchr($str, $substr);
        $str = str_delete($str, $i, $n);
        $str = str_insert($str, $i, $newstr);
    }
    return $str;
}
複製程式碼

相關文章