In PHP ist die String Manipulation eine sehr häufige Aufgabe, bei der häufig zwei Funktionen Strrchr () und Strpos () verwendet werden. Obwohl sie allen Entwicklern helfen, Saiten zu verarbeiten, werden sie unterschiedlich verwendet und implementiert. In diesem Artikel werden die Unterschiede zwischen diesen beiden Funktionen im Detail untersucht und einige gängige Tipps geben, mit denen Sie diese beiden Funktionen effizienter verwenden können.
Strpos () ist eine Funktion in PHP, um den Ort zu finden, an dem zuerst eine Zeichenfolge erscheint. Es gibt die Position in der Zeichenfolge zurück, in der das angegebene Zeichen oder Substring zum ersten Mal angezeigt wird (Zählung von 0). Wenn nicht gefunden wird, gibt Strpos () false zurück.
<span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">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">mixed</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>
$ haystack : Die String, nach der gesucht wird.
$ nadel : Der Charakter oder Substring zu finden.
$ offset (optional): Der Ort zum Starten der Suche. Wenn nicht angegeben, beginnt die Standardeinstellung vom Beginn der Zeichenfolge.
<span><span><span class="hljs-meta"><?php</span></span><span>
</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">"world"</span></span><span>;
</span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strpos</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">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-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Saite '<span class="hljs-subst">$needle</span></span></span><span>' existieren '</span><span><span class="hljs-subst">$haystack</span></span><span>' Die Position in der: </span><span><span class="hljs-subst">$position</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">"Nicht gefunden '<span class="hljs-subst">$needle</span></span></span><span>' Saite。";
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Ausgabe:
<span><span>Saite </span><span><span class="hljs-string">'world'</span></span><span> existieren </span><span><span class="hljs-string">'Hello, world!'</span></span><span> Die Position in der: 7
</span></span>
Strrchr () ist eine Funktion, mit der die Position des angegebenen Zeichens oder Substring in einer zuletzt erscheinten Zeichenfolge ermittelt wird. Im Gegensatz zu Strpos () gibt Strrchr () den Teil zurück, der vom letzten Matching -Zeichen bis zum Ende der Zeichenfolge beginnt.
<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">strrchr</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">mixed</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span> )
</span></span>
$ haystack : Die String, nach der gesucht wird.
$ nadel : Der Charakter oder Substring zu finden.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"Hello, world! Hello again!"</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">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strrchr</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-string">"Vom letzten Auftritt '<span class="hljs-subst">$needle</span></span></span><span>' 开始的子Saite是: </span><span><span class="hljs-subst">$result</span></span><span>";
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Ausgabe:
<span><span>Vom letzten Auftritt </span><span><span class="hljs-string">'Hello'</span></span><span> 开始的子Saite是: Hello again!
</span></span>
Suchrichtung : Strpos () findet den Ort des ersten Substrings in der Zeichenfolge, während Strrchr () den Ort des letzten Vorkommens findet.
Der Rückgabewert ist unterschiedlich : Strpos () gibt den Index (integral) des Zeichens zurück, und wenn das angegebene Zeichen oder Substring nicht gefunden wird, gibt er false zurück. Strrchr () gibt einen Teil der Zeichenfolge von der letzten Übereinstimmung bis zum Ende der Zeichenfolge zurück. Wenn kein angegebenes Zeichen oder Substring gefunden wird, gibt es falsche zurück.
Manchmal müssen wir in der tatsächlichen Entwicklung möglicherweise sowohl das erste als auch das letzte Ereignis der Charakterpositionen in der Saite erhalten. Zu diesem Zeitpunkt wird die Kombination von Strpos () und Strrchr () besonders wichtig. Hier sind einige häufige Tipps.
Angenommen, Sie möchten Substrings zwischen zwei identischen Zeichen extrahieren, aber Sie wissen nur, dass sie am Anfang und am Ende der Zeichenfolge erscheinen. Sie können Strpos () verwenden, um die erste Vorkommensposition zu erhalten, Strrchr (), um die letzte Vorkommensposition zu erhalten, und dann die String -Intercept -Funktion substr () zu verwenden, um den Inhalt zwischen ihnen zu erhalten.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"start-middle-end"</span></span><span>;
</span><span><span class="hljs-variable">$start_pos</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-string">"start"</span></span><span>) + </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-string">"start"</span></span><span>);
</span><span><span class="hljs-variable">$end_pos</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-string">"end"</span></span><span>);
</span><span><span class="hljs-variable">$substring</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$start_pos</span></span><span>, </span><span><span class="hljs-variable">$end_pos</span></span><span> - </span><span><span class="hljs-variable">$start_pos</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"提取的子Saite是: <span class="hljs-subst">$substring</span></span></span><span>";
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Ausgabe:
<span><span><span class="hljs-section">提取的子Saite是: -middle-</span></span><span>
</span></span>
Manchmal müssen Sie einen Teil des Inhalts nach einem Zeichen extrahieren, der zuletzt aus der Zeichenfolge erscheint. An diesem Punkt ist Strrchr () sehr nützlich. Sie können das Teil vom letzten Ereignis des Zeichens bis zum Ende der Saite durch Strrchr () erhalten und es weiter verarbeiten.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"apple,banana,grape,orange"</span></span><span>;
</span><span><span class="hljs-variable">$last_comma</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strrchr</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-string">","</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Das letzte Komma ist: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$last_comma</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Ausgabe:
<span><span><span class="hljs-section">Das letzte Komma ist: orange</span></span><span>
</span></span>
Strpos () wird verwendet, um das erste Ereignis der Position in einer Schnur zu finden, und gibt den Index der Position zurück.
Strrchr () wird verwendet, um das letzte Vorkommen der Zeichenfolge zu finden und das Substring von dieser Position an das Ende der Zeichenfolge zurückzugeben.
Die Verwendung der beiden in Kombination kann einige komplexe String -Extraktions- und Suchprobleme behandeln.
Durch flexible Verwendung von Strpos () und Strrchr () können Sie eine String -Manipulation effizienter durchführen. Durch das Beherrschen ihrer Nutzung wird Ihre Fähigkeiten zur Verarbeitung von Saiten beim Schreiben von PHP -Programmen erheblich verbessert.