2011-07-18 33 views

Respuesta

86

El cuarto parámetro opcional de preg_replace es limit:

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

Gracias por su respuesta, si necesito reemplazar solo la primera partida comenzando desde el final? ¿cuál sería el código? –

+2

@josesanchez Si la cadena no es demasiado larga, puede invertirla usando strrev, y use este truco pero busque el reverso del patrón que desea encontrar, luego invierta la cadena nuevamente. Si es muy largo, querrá escanearlo en reversa para evitar la sobrecarga de invertir la cuerda dos veces – Paulpro

8

Usted puede utilizar el argumento limit de preg_replace para esto y ponerlo en 1 de manera que a lo sumo una sustitución sucede:

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

por ejemplo, el contenido sale $

START 
FIRST AAA 
SECOND AAA 

1) si se utiliza:

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

que va a cambiar todo, desde el principio hasta el último AAA y su resultado será:

REPLACED_STRING 

2) si se utiliza:

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

Su resultado será como:

REPLACED_STRING 
SECOND AAA 
+0

¿por qué sucede esto exactamente? Acerca de "?". – user111671

Cuestiones relacionadas