2011-07-18 15 views

Odpowiedz

86

opcjonalny czwarty parametr preg_replace jest limit:

preg_replace($search, $replace, $subject, 1); 
+0

Dziękuję za odpowiedź, czy muszę wymienić tylko pierwszy mecz, zaczynając od końca? jaki byłby kod? –

+2

@josesanchez Jeśli ciąg znaków nie jest zbyt długi, możesz go odwrócić za pomocą strrev i użyć tej sztuczki, ale szukaj odwrotności wzoru, który chcesz znaleźć, a następnie ponownie odwróć ciąg znaków. Jeśli jest bardzo długi, zechcesz go zeskanować w odwrotnym kierunku, aby uniknąć podwójnego odwrócenia sznurka dwukrotnie: – Paulpro

8

Można użyć limit argument preg_replace do tego i ustawić go na 1 tak, że co najwyżej jedna wymiana dzieje:

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

na przykład obecnie zawartość $:

START 
FIRST AAA 
SECOND AAA 

1), jeśli używasz:

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

to zmieni wszystko od początku do ostatniej AAA i Twój wynik będzie:

REPLACED_STRING 

2) jeśli używasz:

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

Twój wynik będzie podobny:

REPLACED_STRING 
SECOND AAA 
+0

dlaczego tak się dokładnie dzieje? O "?". – user111671

Powiązane problemy