In PHP müssen wir bei der Verarbeitung von Zeichenfolgen häufig bestimmte Teile aus einer Zeichenfolge löschen. Die Funktion mb_strstr () ist eine Multibyte-Verarbeitungsfunktion, die bei der Behandlung von Nicht-ASCII-Zeichen besonders nützlich ist. In diesem Artikel wird vorgestellt, wie die Funktion mb_strstr () verwendet wird, um den angegebenen Teil aus einer Zeichenfolge zu löschen.
mb_strstr () ist eine Multibyte-String-Funktion, die der regulären strst () -Funktion ähnelt, jedoch für Multibyte-Zeichensätze (wie UTF-8, Shift-JIS usw.) ausgelegt ist. Wenn wir daher Strings mit nicht englischen Zeichen verarbeiten müssen, ist mb_strstr () stabiler und zuverlässiger.
<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>
$ haystack : Die Zielzeichenfolge, nach der man suchen muss.
$ nadel : Das zu findene Substring.
$ vor_needle (optional): Wenn Sie auf TRUE gesetzt sind, geben Sie das Teil vor der Nadel zurück, andernfalls geben Sie das Teil nach der Nadel zurück.
$ codierung (optional): Gibt die Zeichencodierung an, Standardeinstellung ist mb_internal_encoding () .
Angenommen, wir haben eine Zeichenfolge und wollen einen Teil davon löschen. Wir können den Teil mit mb_strstr () finden und ihn dann durch Stringoperationen entfernen.
Angenommen, wir haben die folgende Zeichenfolge:
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"Ich lerne gernePHPProgrammierung"</span></span><span>;
</span></span>
Wir hoffen, den Teil "Lernen" zu löschen. Wir können zuerst mb_strstr () verwenden, um den Ort dieses Substrings zu finden und dann die entsprechende Verarbeitung durchzuführen.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"Ich lerne gernePHPProgrammierung"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"Studie"</span></span><span>;
</span><span><span class="hljs-comment">// verwendenmb_strstrFinden"Studie"Wo zu erscheinen soll</span></span><span>
</span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strstr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);
</span><span><span class="hljs-comment">// Wenn gefunden"Studie",Entfernen Sie diesen Teil</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$position</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-comment">// Löschen Sie die Zeichenfolge"Studie"Teil</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>)) . </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>) + </span><span><span class="hljs-title function_ invoke__">mb_strlen</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">$result</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"没有找到指定的Teil"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
<span><span>Ich magPHPProgrammierung
</span></span>
Wenn wir nur den Teil nach dem Substring löschen möchten, können wir den Parameter PROW_NEEDLE der Funktion mb_strstr () verwenden.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"Ich lerne gernePHPProgrammierung"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"Studie"</span></span><span>;
</span><span><span class="hljs-comment">// Erhalten"Studie"前的Teil</span></span><span>
</span><span><span class="hljs-variable">$before</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strstr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$before</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
<span><span>Ich mag
</span></span>
Wenn wir mehrere verschiedene Substrings aus der Zeichenfolge entfernen müssen, können wir MB_STRSTR () und andere String -Manipulationsfunktionen in Kombination verwenden. Wir können Aufgaben effizient durch Schleifen und reguläre Ausdrücke erledigen.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"Ich lerne gernePHPProgrammierung和WebEntwicklung"</span></span><span>;
</span><span><span class="hljs-variable">$needles</span></span><span> = [</span><span><span class="hljs-string">"Studie"</span></span><span>, </span><span><span class="hljs-string">"Web"</span></span><span>];
</span><span><span class="hljs-comment">// Mehrere Substrings löschen</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$needles</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span>) {
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_replace</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">$str</span></span><span>);
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$str</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
<span><span>Ich magPHPProgrammierung和Entwicklung
</span></span>
mb_strstr () ist für Multi-Byte-Zeichensätze optimiert. Es funktioniert normalerweise besser als das herkömmliche Strstr (), wenn es sich um Charakter -Sets handelt, einschließlich Chinesen, Japanisch, Koreanisch usw.
Stellen Sie bei der Verarbeitung von Multibyte -Zeichen sicher, dass das korrekte Codierungsformat angegeben ist, andernfalls können die Ergebnisse ungenau sein.
In einigen Fällen können Sie unter Verwendung von mb_substr () und mb_strpos () in Kombination die Löschungsposition der Zeichenfolge genau steuern.
Durch die Funktion mb_strstr () können wir den angegebenen Teil einfach aus der Zeichenfolge löschen, insbesondere im Multi-Byte-Zeichenszenario, das einen sehr signifikanten Effekt hat. Wenn Sie diese Techniken verstehen und beherrschen, werden Sie nicht nur beim Umgang mit Strings effizienter, sondern auch einige häufige Codierungsprobleme vermeiden.