Dieser Artikel stellt hauptsächlich vor, wie man in PHP nur einmal oder nur N-mal ersetzt, und stellt das Thema anhand eines einfachen Beispiels vor. Ich hoffe, es hilft allen.
Wir alle wissen, dass in PHP Strtr, strreplace und andere Funktionen zum Ersetzen verwendet werden können, aber sie alle ersetzen jedes Mal, wenn sie ersetzt werden. Zum Beispiel:
„abcabbc“, wenn Sie diese Zeichenfolge verwenden Wenn Sie die Funktion oben verwenden, um b zu ersetzen, werden sie alle ersetzt, aber was ist, wenn Sie nur ein oder zwei ersetzen möchten? Damals habe ich preg_replace direkt verwendet, um es zu implementieren.
mixed preg_replace (gemischtes Muster, gemischte Ersetzung, gemischter Betreff [, int limit]) Suchen Sie nach einer Übereinstimmung mit Mustermuster im Betreff und ersetzen Sie es mit Ersatz. Wenn limit angegeben ist, werden nur limit-Übereinstimmungen ersetzt; wenn limit weggelassen wird oder einen Wert von -1 hat, werden alle Übereinstimmungen ersetzt.
Da der vierte Parameter von preg_replace die Anzahl der Ersetzungen begrenzen kann, ist es sehr praktisch, dieses Problem auf diese Weise zu lösen. Aber nachdem wir uns die Funktionskommentare zu str_replace auf php.net angesehen haben, können wir tatsächlich ein paar repräsentative Funktionen herausgreifen.
Methode 1: str_replace_once
IdeeErmitteln Sie zunächst die Position des zu ersetzenden Schlüsselworts und verwenden Sie dann die Funktion substr_replace um es direkt zu ersetzen.
<?php function str_replace_once($needle, $replace, $haystack) { // Looks for the first occurence of $needle in $haystack // and replaces it with $replace. $pos = strpos($haystack, $needle); if ($pos === false) { // Nothing found return $haystack; } return substr_replace($haystack, $replace, $pos, strlen($needle)); } ?>
Methode 2, str_replace_limit
Denken Ich verwende immer noch preg_replace, aber seine Parameter ähneln eher preg_replace und einige Sonderzeichen sind maskiert, was es vielseitiger macht.
<? function str_replace_limit($search, $replace, $subject, $limit=-1) { // constructing mask(s)... if (is_array($search)) { foreach ($search as $k=>$v) { $search[$k] = '`' . preg_quote($search[$k],'`') . '`'; } } else { $search = '`' . preg_quote($search,'`') . '`'; } // replacement return preg_replace($search, $replace, $subject, $limit); } ?>
Verwandte Empfehlungen:
Einführung in die PHP-String-Segmentierung und den Vergleich
Detaillierte Erläuterung der Verwendung der regulären PHP-String-Ersetzungsfunktion preg_replace
Das obige ist der detaillierte Inhalt vonPHP-Textersetzung zu bestimmten Zeiten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!