Aktueller Standort: Startseite> Neueste Artikel> Was kehrt MB_SUBSTR_COUNT zurück, wenn sie auf eine leere Zeichenfolge stoßen? Ergebnisanalyse und Vorsichtsmaßnahmen

Was kehrt MB_SUBSTR_COUNT zurück, wenn sie auf eine leere Zeichenfolge stoßen? Ergebnisanalyse und Vorsichtsmaßnahmen

gitbox 2025-09-02

In PHP wird die Funktion MB_SUBSTR_COUNT verwendet, um die Anzahl zu berechnen, die ein anderes Substring in einer Zeichenfolge erscheint. Diese Funktion ist Teil einer Multibyte-String-Erweiterung (Mbstring), die speziell verwendet wird, um Zeichenfolgen zu verarbeiten, die Multibyte-Zeichen wie UTF-8-Codierung enthalten. Im Gegensatz zu Substr_Count kann MB_SUBSTR_COUNT die Anzahl der Zeichen bei der Verarbeitung von Multibyte -Zeichen korrekt berechnen.

Wenn wir jedoch MB_SUBSTR_COUNT verwenden und eine leere Zeichenfolge als Parameter übergeben, welches Ergebnis wird zurückgegeben? In diesem Artikel wird das Verhalten der Funktion MB_SUBSTR_COUNT bei der Begegnung einer leeren Zeichenfolge analysiert und einige Vorsichtsmaßnahmen vorgesehen.

Grundlegende Verwendung der Funktion MB_SUBSTR_COUNT

Der Funktionsprototyp von mb_substr_count lautet wie folgt:

 <span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_substr_count</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$encoding</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>);
</span></span>
  • $ haystack : Die durchsuchte Zielzeichenfolge.

  • $ nadel : Das Substring, nach dem in der Zielzeichenfolge gesucht werden muss.

  • $ codierung : Optionaler Parameter, Zeichencodierung angeben. Die interne Zeichenkodierung wird standardmäßig verwendet.

Diese Funktion gibt die Häufigkeit zurück. ** $ Nadel erscheint in $ haystack **.

1. Verhalten, wenn mb_substr_count auf eine leere Zeichenfolge als Substring trifft

Angenommen, wir übergeben eine leere Zeichenfolge als Substring (d. H. $ nadel ) an die Funktion MB_SUBSTR_COUNT gemäß der PHP -Dokumentation. Der Rückgabewert ist die Anzahl der Vorkommen des in der Zielzeichenfolge enthaltenen Substring .

Beispiel 1: leeres Substring als Nadel

 <span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"Hello, world!"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>;
</span><span><span class="hljs-variable">$count</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substr_count</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$count</span></span><span>;  </span><span><span class="hljs-comment">// Ausgabe:0</span></span><span>
</span></span>

Im obigen Code ist $ nadel eine leere Zeichenfolge. Obwohl die Zielzeichenfolge $ Haystack nicht leer ist, behandelt PHP die leere Zeichenfolge als "Substring, das nicht erschienen ist". Daher gibt die Funktion 0 zurück.

2. Verhalten, wenn eine leere Zielzeichenfolge als Heuhaufen verwendet wird

Wenn die Zielzeichenfolge $ Haystack an MB_SUBSTR_COUNT übergeben wird (d. H. $ haystack = "" ), beträgt der Rückgabewert 0, unabhängig von $ nadel . Da eine leere Zeichenfolge unabhängig vom Substring kein Substring enthalten kann.

Beispiel 2: leere Zielzeichenfolge als Haystack

 <span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"Hello"</span></span><span>;
</span><span><span class="hljs-variable">$count</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substr_count</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$count</span></span><span>;  </span><span><span class="hljs-comment">// Ausgabe:0</span></span><span>
</span></span>

Obwohl $ nadel "Hallo" ist, enthält der leere String $ Haystack nichts, sodass er 0 zurückgibt.

3. Zusammenfassung der besonderen Umstände leerer Saiten

Aus den beiden oben genannten Beispielen ist ersichtlich, dass sich MB_SUBSTR_COUNT intuitiv mit leeren Zeichenfolgen verhält:

  • Wenn das Substring leer ist , geben Sie 0 zurück, da kein Substring übereinstimmt werden kann.

  • Wenn die Zielzeichenfolge leer ist , wird 0 zurückgegeben, da die leere Zeichenfolge keine Substrings enthalten kann.

Diese beiden Situationen sind in der Funktion MB_SUBSTR_COUNT relativ häufige "Grenzsituationen", und Sie müssen darauf achten, wenn Sie sie verwenden.

4. Leistungsüberlegungen

Obwohl das Verhalten leerer Zeichenfolgen in den meisten Fällen nicht problematisch ist, wird empfohlen, leere Zeichenfolgen als Parameter an mb_substr_count zur Verbesserung der Code -Lesbarkeit und -Effizienz zu vermeiden. Wenn $ nadle eine leere Zeichenfolge ist, wird empfohlen, vor dem Aufrufen von MB_SUBSTR_COUNT beispielsweise eine einfache Überprüfung durchzuführen:

 <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$needle</span></span><span> !== </span><span><span class="hljs-string">""</span></span><span>) {
    </span><span><span class="hljs-variable">$count</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substr_count</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-variable">$count</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
}
</span></span>

Dies kann unnötige Funktionsaufrufe reduzieren und die Programmleistung verbessern.

5. Zusammenfassung und Vorsichtsmaßnahmen

  1. Leere Zeichenfolge als Nadel : MB_SUBSTR_COUNT gibt 0 zurück, wenn das Substring leer ist.

  2. Leere Zeichenfolge als Haystack : MB_SUBSTR_COUNT gibt auch 0 zurück, wenn die Zielzeichenfolge leer ist.

  3. Leistungsoptimierung : Vermeiden Sie es, leere Zeichenfolgen als Nadel zu übergeben, und dann kann das Aufrufen von MB_SUBSTR_COUNT nach der Überprüfung die Effizienz verbessern.

Das Verständnis dieser Details kann den Entwicklern dabei helfen, beim Schreiben von PHP -Code mb_substr_count besser zu verwenden und unnötige Fehler und Leistungsprobleme zu vermeiden.