算法原理:

    PHP代码:

    1. function strstr_self($str1, $str2) {
    2. // 初始指针
    3. $i = $j = 0;
    4. // 跳出循环的条件是有一个字符串匹配完毕
    5. while ($i < strlen($str1) && $j < strlen($str2)) {
    6. // 当前位字符相同时,同时向后移动指针
    7. if ($str1[$i] == $str2[$j]) {
    8. $i++;
    9. $j++;
    10. } else {
    11. $i = $i - $j + 1; // 主串指针仅仅向后移动一位,重新匹配
    12. $j = 0;
    13. }
    14. }
    15. // 子串匹配成功跳出循环,代表匹配成功
    16. if ($j == strlen($str2)) {
    17. return $i - $j + 1; // 返回当前主串指针位置
    18. }
    19. return false;
    20. }
    21. echo strstr_self("abababcdab", "abcd");