Die preg_replace-Funktion kann gemäß einem regulären Ausdruck übereinstimmen und ersetzen, und die Anzahl der Male kann angegeben werden. Jetzt habe ich eine Anforderung wie diese: Ich möchte das n-te Mal der angegebenen Übereinstimmung ersetzen, z. Ich habe einen regulären Ausdruck geschrieben, dieser String kann mit insgesamt drei Stellen übereinstimmen, und dann möchte ich nur die zweite Übereinstimmung ersetzen. Was soll ich tun? Gibt es eine solche Implementierung in PHP?
Die preg_replace-Funktion kann gemäß einem regulären Ausdruck übereinstimmen und ersetzen, und die Anzahl der Male kann angegeben werden. Jetzt habe ich eine Anforderung wie diese: Ich möchte das n-te Mal der angegebenen Übereinstimmung ersetzen, z. Ich habe einen regulären Ausdruck geschrieben, dieser String kann insgesamt dreimal übereinstimmen, und dann möchte ich nur den zweiten Treffer ersetzen. Was soll ich tun? Gibt es eine solche Implementierung in PHP?
Verwenden Sie preg_replace_callback
Informationen zur Verwendung finden Sie im Handbuch
kann mit preg_replace_callback
verarbeitet werden, wodurch andere Funktionen zum Ersetzen aufgerufen werden. Sie können die Ersetzungslogik selbst verwalten
Gehen Sie einfach zum Code:
<code>$i=1; $result = preg_replace_callback('/a/',function($match)use(&$i){ $match = $i != 2 ? $match[0] : ''; $i++; return $match; },'a1a2a3a4'); var_dump($result);</code>