Pregunta

Estoy tratando de encontrar algunos ciertos bloques en mi archivo de datos y vuelva a colocar algo dentro de ellos. Después de que poner todo el asunto (con datos reemplazados) en un nuevo archivo. Mi código en el momento es el siguiente:

$content = file_get_contents('file.ext', true);

//find certain pattern blocks first
preg_match_all('/regexp/su', $content, $matches);

foreach ($matches[0] as $match) {
  //replace data inside of those blocks
  preg_replace('/regexp2/su', 'replacement', $match);
}

file_put_contents('new_file.ext', return_whole_thing?);

Ahora el problema es que no sé cómo return_whole_thing. Básicamente, file.ext y new_file.ext son casi los mismos a excepción de los datos reemplazados. Cualquier sugerencia de lo que debería estar en el lugar de return_whole_thing?

Gracias!

¿Fue útil?

Solución

Es probablemente el mejor para fortalecer su expresión regular para encontrar un sub-patrón en el modelo original. De esa manera usted puede simplemente llamar a preg_replace () y hacer con ella.

$new_file_contents = preg_replace('/regular(Exp)/', 'replacement', $content);

Esto se puede hacer con "()" dentro de la expresión regular. Una búsqueda rápida de Google para "sub-patrones de expresión regular" resultó en esta

Otros consejos

Ni siquiera necesita el preg_replace; debido a que ya tienes los partidos que sólo puede utilizar un str_replace normal de este modo:

$content = file_get_contents('file.ext', true);

//find certain pattern blocks first
preg_match_all('/regexp/su', $content, $matches);

foreach ($matches[0] as $match) {
  //replace data inside of those blocks
  $content = str_replace( $match, 'replacement', $content)
}

file_put_contents('new_file.ext', $content);

No estoy seguro de entender su problema. ¿Podrías publicar un ejemplo de:

  • file.ext, el archivo original
  • la expresión regular que desea utilizar y lo que se desea reemplazar partidos
  • new_file.ext, su salida deseada

Si lo que desea es leer file.ext, reemplazar un partido de expresiones regulares, y almacenar el resultado en new_file.ext, todo lo que necesita es:

$content = file_get_contents('file.ext');
$content = preg_replace('/match/', 'replacement', $content);
file_put_contents('new_file.ext', $content);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top