2011-03-09 27 views

Respuesta

36

str_replace reemplaza una ocurrencia específica de una cadena, por ejemplo, "foo" solo coincidirá y reemplazará eso: "foo". preg_replace hará coincidir la expresión regular, por ejemplo "/f.{2}/" coincidirá y reemplazará "foo", pero también "fey", "abeto", "zorro", "f12", etc.

[EDIT]

Vea usted mismo:

$string = "foo fighters"; 
$str_replace = str_replace('foo','bar',$string); 
$preg_replace = preg_replace('/f.{2}/','bar',$string); 
echo 'str_replace: ' . $str_replace . ', preg_replace: ' . $preg_replace; 

La salida es:

str_replace: combatientes de barras, preg_replace: barhters barra

:)

+0

Hmm, realmente no veo una ventaja de preg_replace, parece un poco hit'n'miss! – benhowdle89

+12

No ha preguntado sobre las ventajas, sino la diferencia entre las dos: D – mingos

+0

¡No me quejo! Solo una observación ... – benhowdle89

12

str_replace se acaba de sustituir una cadena fija con otra cadena fija, y será mucho más rápido.

Las funciones de expresión regular le permiten buscar y reemplazar con un patrón no fijo llamado regular expression. Hay muchos "sabores" de expresión regular que son en su mayoría similares, pero tienen ciertos detalles diferentes; de lo que estamos hablando aquí es Perl Compatible Regular Expressions (PCRE).

Si le parecen iguales, entonces debe usar str_replace.

+0

Bueno, es bueno para las búsquedas dinámicas en patrones que no conoce, pero si conoce el patrón (incluso durante el tiempo de ejecución) puede crear el botón en ese momento y hacer str_ a menos que desee apresar diferentes partes al mismo tiempo . – My1

3

str_replace búsquedas de apariciones de texto puro, mientras que preg_replace para los patrones.