Aktueller Standort: Startseite> Neueste Artikel> MB_STRSTR und MB_STRPOS werden zusammen verwendet, um komplexe String -Fragmente zu extrahieren.

MB_STRSTR und MB_STRPOS werden zusammen verwendet, um komplexe String -Fragmente zu extrahieren.

gitbox 2025-09-29

In PHP ist die String -Verarbeitung eine der häufigsten Operationen. Und wenn Sie vor einer komplexen Saite stehen, kann das effiziente Extrahieren der von Ihnen benötigten Fragmente eine Herausforderung werden. Insbesondere wenn Saiten Inhalte in vielen verschiedenen Formaten enthalten, ist es besonders wichtig, die richtigen Funktionen und Methoden zu verwenden. Dieser Artikel konzentriert sich auf die Verwendung der Kombination von zwei Multibyte -String -Funktionen, MB_STRSTR und MB_STRPOS , um bestimmte Fragmente aus komplexen Zeichenfolgen zu extrahieren.

1. Einführung in MB_STRSTR und MB_STRPOS

Verstehen Sie vor Beginn des tatsächlichen Kampfes zunächst die grundlegende Verwendung dieser beiden Funktionen.

  • MB_STRSTR : Diese Funktion wird verwendet, um das erste Auftreten einer Zeichenfolge in einer anderen Zeichenfolge zu finden. Im Gegensatz zur herkömmlichen STRSTR -Funktion ist MB_STRSTR so konzipiert, dass sie Multibyte-Codierungen wie UTF-8 und Shift-JIS unterstützen, die diese Codierungsformate korrekt behandeln.

    Grammatik:

     <span><span><span class="hljs-title function_ invoke__">mb_strstr</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">bool</span></span><span> </span><span><span class="hljs-variable">$before_needle</span></span><span> = </span><span><span class="hljs-literal">false</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><span class="hljs-keyword">string</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
    </span></span>

    Parameterbeschreibung:

    • $ haystack : Die Zielzeichenfolge, nach der man suchen muss.

    • $ nadel : Das zu findene Substring.

    • $ vor_needle : Wenn auf True gesetzt, wird das Teil vor der Nadel zurückgegeben.

    • $ codierung : Zeichencodierung angeben, standardmäßig NULL (dh die Standard -Codierung des Systems).

  • MB_STRPOS : Diese Funktion wird verwendet, um die erste Vorkommensposition eines Substrings in einer anderen Zeichenfolge zu finden, und gibt den Index der Position des Substring in der Zielzeichenfolge zurück. Es unterstützt auch Multibyte -Codierung.

    Grammatik:

     <span><span><span class="hljs-title function_ invoke__">mb_strpos</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">int</span></span><span> </span><span><span class="hljs-variable">$offset</span></span><span> = </span><span><span class="hljs-number">0</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><span class="hljs-keyword">int</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
    </span></span>

    Parameterbeschreibung:

    • $ haystack : Die Zielzeichenfolge, nach der man suchen muss.

    • $ nadel : Das zu findene Substring.

    • $ offset : Gibt an, wo die Suche gestartet wird.

    • $ codierung : Gibt die Zeichencodierung an, Standard ist null .

2. Nutzungsszenario: Komplexe Saitenfragmente extrahieren

Angenommen, wir haben eine Zeichenfolge mit vielen Informationen, wie z. B. das Profil des Benutzers, das mehrere Felder wie Name, E -Mail, Adresse usw. enthält. Unsere Aufgabe ist es, den Wert eines bestimmten Feldes aus ihm zu extrahieren.

Zum Beispiel bei der folgenden Zeichenfolge:

 <span><span><span class="hljs-variable">$user_info</span></span><span> = </span><span><span class="hljs-string">"Name: Zhang San, Post: [email protected], Adresse: Bezirk Chaoyang, Peking"</span></span><span>;
</span></span>

Wir möchten den Mailbox -Teil daraus extrahieren. Um dies zu erreichen, können wir die Funktionen MB_STRPOS und MB_STRSTR verwenden, um mit der Suche und Extraktion zusammenzuarbeiten.

3. Praktischer Betrieb

3.1 Finden Sie den Ort der E -Mail -Adresse

Zunächst müssen wir den Speicherort des Felds "Mailbox" in der Zeichenfolge finden. Verwenden Sie mb_strpos , um zu implementieren:

 <span><span><span class="hljs-variable">$email_position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$user_info</span></span><span>, </span><span><span class="hljs-string">"Post: "</span></span><span>);
</span></span>

Diese Funktion gibt die Position des "Mailbox:" -Teils in der Zeichenfolge zurück.

3.2 Verwenden Sie MB_STRSTR, um Mailbox zu extrahieren

Als nächstes verwenden wir MB_STRSTR , um die E -Mail -Adresse aus "E -Mail:" zu extrahieren. Um dies zu tun, möchten wir den Parameter $ vor_needle an false weitergeben, was darauf hinweist, dass die Start von "E -Mail:" und das Ende der Zeichenfolge:

 <span><span><span class="hljs-variable">$email_info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strstr</span></span><span>(</span><span><span class="hljs-variable">$user_info</span></span><span>, </span><span><span class="hljs-string">"Post: "</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>);
</span></span>

Zu diesem Zeitpunkt wird der Wert von $ mail_info sein:

 <span><span>Post</span><span><span class="hljs-punctuation">:</span></span><span> zhangsan</span><span><span class="hljs-meta">@example</span></span><span>.com, Adresse</span><span><span class="hljs-punctuation">:</span></span><span> Bezirk Chaoyang, Peking
</span></span>

Aber wir brauchen nur den Mailbox -Teil, also werden wir als nächstes weiter damit umgehen.

3.3 Reine E -Mail -Adresse extrahieren

Um eine reine E -Mail -Adresse zu extrahieren, können wir mit MB_STRPOS den Endstandort der E -Mail -Adresse ermitteln und über MB_SUBSTR extrahieren.

Zuerst finden wir den Startort der E -Mail -Adresse (es ist bereits bekannt, dass sie nach "E -Mail:") sein und dann den Ort des ersten Kommas finden, dh den Endstandort der E -Mail -Adresse:

 <span><span><span class="hljs-variable">$email_start</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$email_info</span></span><span>, </span><span><span class="hljs-string">"Post: "</span></span><span>) + </span><span><span class="hljs-number">4</span></span><span>; </span><span><span class="hljs-comment">// +4Es ist weil“Post: ”Länge</span></span><span>
</span><span><span class="hljs-variable">$email_end</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$email_info</span></span><span>, </span><span><span class="hljs-string">","</span></span><span>, </span><span><span class="hljs-variable">$email_start</span></span><span>); </span><span><span class="hljs-comment">// 从PostAdresse的起始位置开始查找逗号</span></span><span>
</span></span>

Dann verwenden wir MB_SUBSTR , um die E -Mail -Adresse zu extrahieren:

 <span><span><span class="hljs-variable">$email</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$email_info</span></span><span>, </span><span><span class="hljs-variable">$email_start</span></span><span>, </span><span><span class="hljs-variable">$email_end</span></span><span> - </span><span><span class="hljs-variable">$email_start</span></span><span>);
</span></span>

Zu diesem Zeitpunkt beträgt der Wert von $ E -Mail :

 <span><span>zhangsan</span><span><span class="hljs-keyword">@example</span></span><span>.com
</span></span>

4. Zusammenfassung

Durch die Kombination von MB_STRSTR und MB_STRPOS können wir die erforderlichen Fragmente aus komplexen Zeichenfolgen mit sehr Flexibilität extrahieren. Der Schlüssel ist:

  • Verwenden Sie MB_STRPOS , um die Indexposition des Substring zu ermitteln.

  • Verwenden Sie MB_STRSTR , um Zeichenfolgen aus dem angegebenen Ort zu extrahieren.

  • Extrahieren Sie das Zielfragment weiter genau nach der erforderlichen Länge durch mb_substr .

Diese Methode eignet sich besonders für die Verarbeitung von Zeichenfolgen mit mehreren Informationen und kann uns helfen, die erforderlichen Daten in der tatsächlichen Entwicklung effizient zu erhalten.