webentwicklung-frage-antwort-db.com.de

Ersetze nur den ersten Treffer mit preg_replace

Ich habe eine Zeichenfolge mit folgender Struktur: 'aba aaa cba sbd dga gad aaa cbz'. Die Zeichenfolge kann jedes Mal etwas anders sein, da sie von einer externen Quelle stammt.

Ich möchte nur das erste Vorkommen von 'aaa' ersetzen, nicht aber die anderen. Ist es möglich?

51
deadbeef

Der optionale vierte Parameter von preg_replace ist limit:

preg_replace($search, $replace, $subject, 1);
95
Paulpro

Sie können dazu das limit-Argument von preg_replace verwenden und es auf 1 setzen, damit höchstens eine Ersetzung geschieht:

$new = preg_replace('/aaa/','replacement',$input,1);
10
codaddict

zum Beispiel ist out $ content:

START 
FIRST AAA 
SECOND AAA

1) wenn Sie verwenden:

$content = preg_replace('/START(.*)AAA/', 'REPLACED_STRING', $content);

es ändert sich alles vom START zum letzten AAA und Ihr Ergebnis wird sein:

REPLACED_STRING

2) wenn Sie verwenden:

$content = preg_replace('/START(.*?)AAA/', 'REPLACED_STRING', $content);

Ihr Ergebnis wird wie folgt aussehen:

REPLACED_STRING 
SECOND AAA
0
T.Todua