Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Diskussion zum dritten PHP-Quellcode: Über die Funktionen strrchr, strstr und stristr

Eine kurze Diskussion zum dritten PHP-Quellcode: Über die Funktionen strrchr, strstr und stristr

不言
不言Original
2018-06-28 16:34:052697Durchsuche

Dieser Artikel stellt hauptsächlich den PHP-Quellcode drei vor: die Funktionen strrchr, strstr, stristr, die einen bestimmten Referenzwert haben. Jetzt können Freunde in Not darauf verweisen

String strrchr (Zeichenfolge Heuhaufen, Zeichenfolge Nadel)

Gibt die Zeichenfolge nach der letzten Nadel (Zeichen) im Heuhaufen zurück
Wenn „Nadel“ eine Zahl ist, wandeln Sie diese Zahl in das diesem Wert entsprechende Zeichen um.
Wenn „Nadel“ eine Zahl ist mehr als eine Zeichenfolge, nehmen Sie das erste Zeichen
Wenn Heuhaufen eine Zahl ist, wird die Zahl direkt in eine Zeichenfolge umgewandelt
Rufen Sie im Programm „convert_to_string_ex(haystack)“ auf Die Implementierung davon; Die Funktion behandelt grundsätzlich einige Sondersituationen (wie oben). Am Ende wird die Position ermittelt, an der die letzte Nadel erscheint, und die Zeichenfolge wird entsprechend der Position nach dieser Position zurückgegeben. Das Gleiche gilt für die Rückgabe false

string strstr (string haystack, string Needle)
Diese Funktion ähnelt strrchr, außer dass ihre Nadel eine Zeichenfolge sein darf und sie nach dem ersten Vorkommen von „nadel“ sucht position gibt die folgende Zeichenfolge zurück. Wenn sie nicht existiert, wird FALSE zurückgegeben.

enthält einige spezielle Details, die es wert sind, in seinem Code gelernt zu werden, wie im folgenden Code gezeigt.

 static inline char *zend_memnstr(char *haystack, char *needle, int needle_len, char *end){
    char *p = haystack;
    char ne = needle[needle_len-1];     if(needle_len > end-haystack) {
        return NULL;
    }
    end -= needle_len;   //    优化细节一,仅查找end-needle_len长度的字符串     while (p <= end) {
        //    优化细节二,此处先判断字符串的开头和结尾的字符是否一样,如果一样则再判断整个字符串,提升性能
        if ((p = (char *)memchr(p, *needle, (end-p+1))) && ne == p[needle_len-1]) {    
            if (!memcmp(needle, p, needle_len-1)) {
                return p;
            }
        }         if (p == NULL) {
            return NULL;
        } 
        p++;
    }     return NULL;}

Der obige Code ist der Kerncode für die Implementierung der Strstr- und Stristr-Funktion. Funktion: Finden Sie die Position, an der die Nadel zum ersten Mal im Heuhaufen erscheint.

String Stristr (String Heuhaufen, String Needle)

stristr-Funktion Die Funktion ähnelt strstr, unterscheidet jedoch nicht zwischen Groß- und Kleinschreibung.

Der Hauptunterschied in der PHP-Quellcode-Implementierung besteht in der Hinzufügung der Operation zum Konvertieren aller Zeichenfolgen in Kleinbuchstaben. Die Programmimplementierung besteht darin, vor der Suche den folgenden Code hinzuzufügen:

   php_strtolower(s, s_len);php_strtolower(t, t_len);return php_memnstr(s, t, t_len, s + s_len);

PS: Im Prozess Beim Betrachten des Quellcodes habe ich den vorherigen Absatz von „Zeiger erneut erkennen“ noch einmal gelesen und einige Erkenntnisse gewonnen.

Zeiger können addiert und subtrahiert werden, nicht weil sie Zeiger sind, sondern wegen der Additions- und Subtraktionsregeln gehören nicht zu Variablen wie Zeigern, sondern zum Instinkt des Datentyps Adresse. Gerade weil die Adresse addieren und subtrahieren kann, kann der Zeiger als Variable, die die Adresse speichert, Additions- und Subtraktionsoperationen ausführen.

Dies ist dasselbe wie bei ganzzahligen Variablen, da ganze Zahlen addiert, subtrahiert, multipliziert und dividiert werden können, sodass sie auch addiert, subtrahiert, multipliziert und dividiert werden können.


Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Ein kurzer Vortrag über PHP-Quellcode 2: Über die Funktionen strlen, strtolower, strtoupper, ord, chr

Ein kurzer Vortrag über PHP-Quellcode 1: Funktionen zum Explodieren und Implodieren

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion zum dritten PHP-Quellcode: Über die Funktionen strrchr, strstr und stristr. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn