ich diesen preg_replaceWarum preg_replace dieses Ergebnis geben
echo preg_replace('/.*/','r','string');
bin mit erwarte ich es ausgeben sollte r
Aber der Ausgang ist
rr
Kann jemand erklären, warum es zwei r Echo?
ich diesen preg_replaceWarum preg_replace dieses Ergebnis geben
echo preg_replace('/.*/','r','string');
bin mit erwarte ich es ausgeben sollte r
Aber der Ausgang ist
rr
Kann jemand erklären, warum es zwei r Echo?
Da preg_replace globale Flag verwendet und .*
zuerst die ganze Zeichenfolge und dann die leere Zeichenfolge am Ende und daher sehen Sie zweimal die r. Wenn Sie nur die Zeichenfolge ersetzen möchten, müssen Sie expliziter mit dem Muster sein. Als Beispiel können Sie folgende ^.*
verwenden. Andere Option ist das Hinzufügen von Grenzwert zu preg_replace, um nur die erste Übereinstimmung zu ersetzen: preg_replace ('/.*/', 'r', 'string', 1)
Da '. *' * Auch * entspricht dem leeren Zeichenfolge. (Irgendwo einmal.) – mario
preg findet "abcd", was zu '. *' Passt. schaut dann weiter, findet die leere Zeichenkette, die ebenfalls ". *" passt, da der Sternoperator "Null oder mehr" bedeutet. also hat es zwei Übereinstimmungen. Willst du die leere Zeichenfolge nicht? Verwenden Sie '. +' - der Plus-Operator, der "einmal oder mehr" bedeutet. –
thankksssss ich habe es – beginner