2016-07-12 9 views
0

Ich habe versucht, nach einer Möglichkeit zu suchen, eine Zeichenfolge innerhalb einer anderen Zeichenfolge zu finden und die Position zurückgeben, wo es mit PHP gefunden wurde, aber nicht strpos verwenden, da dies hilft mir Programmierung lernen, ohne sich auf native Funktionen so sehr zu verlassen.Wie können Sie eine Zeichenfolge in einer anderen Zeichenfolge ohne Strop verwenden?

Wie würde ich darüber gehen?

+1

Native Funktionen sind für uns wichtig. – FirstOne

+2

Aber lass es uns versuchen. Was hast du bis jetzt gemacht? Du hast gesagt, dass du dich nicht auf native Funktionen verlassen willst (aber du verlässt dich jetzt auf "Foren"). Sie sollten also in der Lage sein, einen eigenen Code zu entwickeln. Praxislogik;) – FirstOne

+0

Es ist nicht, wenn Sie mich nur in die Dokumentation verweisen könnten, wäre ich mehr als glücklich, es selbst zu erforschen, Bruder? – Steven

Antwort

2

Ich glaube nicht, dass es etwas falsch mit den nativen Funktionen zu verlassen, aber wenn Sie nur versuchen, wie etwas, um herauszufinden, wie strposkonnte Arbeit hinter die Szenen, hier ist ein sehr einfaches Beispiel, dass nur Sprachkonstrukte verwendet:

function my_strpos ($haystack, $needle, $offset = 0) { 

    // for loop with indexes for both strings, up to the length of $haystack 
    for ($h_index=$offset, $n_index=0; isset($haystack[$h_index]); $h_index++, $n_index++) { 

     if ($haystack[$h_index] == $needle[$n_index]) {   // *CHARACTERS MATCH* 

      if (!isset($start_pos)) $start_pos = $h_index;  // set start_pos if not set 

      if (!isset($needle[$n_index + 1])) return $start_pos; // all characters match 


     } else {             // *CHARACTERS DON'T MATCH* 

      $n_index = -1;          // reset $needle index 

      unset($start_pos);         // unset match start pos. 
     } 
    } 
    // all charactes of $haystack iterated without matching $needle 
    return false; 
} 

Dies ist offensichtlich eine naive Implementierung, die für vali nicht überprüfen d Eingabe oder Handhabung von Fehlern, aber hoffentlich wird es eine mögliche Methode zeigen, eine Zeichenfolge innerhalb einer anderen zu finden.

Wenn Sie wirklich wissen wollen, wie strpos Arbeit hinter den Kulissen tut, here is a great (although a bit dated) article darüber, wie die PHP-Quelle zu verstehen, die strpos als Beispiel zu verwenden, geschieht.

0

Sie können strstr verwenden, Dokumentation here

<?php 
    $haystack = "Hello my dear friend"; 
    $needle = "friend"; 
// Returns false if needle is not inside haystack 
    strstr($haystack, $needle); 
?> 
+0

@TimMalone Ich hoffe irgendwie, dass du sarkastisch bist. Es wurde wahrscheinlich ohne das Lesen der Frage gemacht (das spricht über native Funktionen). Außerdem "findet" dieser Code nicht einmal die Position eines Strings in einem anderen: [https://eval.in/604353](https://eval.in/604353) - keine Position zurückgegeben ... – FirstOne

Verwandte Themen