2016-03-23 21 views
2

Ich habe eine Zeichenfolge, und ich möchte einen Zeilenumbruch, nachdem die beiden ersten Worte hinzuzufügen:Wie preg_replace Ersatz mehr stoppen als einmal

$string = 'This is my string I want to but cut. 

Was ich so weit haben, dass ein Zeilenumbruch nach hinzugefügt alle zwei Worte, aber das ist nicht das, was ich will ...

preg_replace('~((\w+\s){2})~i', '$1' . '<br>', $string); 

Antwort

4

die Funktion preg_replace($pattern, $replacement, $subject ,$limit = -1, &$count) bietet das optionale Argument $limit, die standardmäßig auf -1 gesetzt ist, was bedeutet, ‚unbegrenzt‘.

Die Spezifikation sagt folgenden über $limit:

den maximal möglichen Ersatz für jedes Muster in jedem Fach String. Der Standardwert ist -1 (kein Limit).

Damit das Limit Argument auf Ihren Anruf der preg_replace-Funktion, in den es nur einmal ersetzen zu machen:

preg_replace('~((\w+\s){2})~i', '$1' . '<br>', $strong, 1); 
+0

Perfekt - das funktioniert gut! Danke für das Teilen der Informationen! – user1706680

1

hinzufügen ^ Muster zu Ihrem regex den Anfang der Zeichenfolge übereinstimmen:

preg_replace('~^((\w+\s){2})~i', '$1<br>', $strong); 
Verwandte Themen