¿Puedo str_replace en otro archivo?

Estoy trabajando en un archivo que debería reemplazar una variable en otro archivo. Hasta ahora probé:

$File = "$dir/submit.php";
$fh = fopen($File, 'r') or die("Couldn't edit the Config-file. Please report to admin.");
$chosendb = str_replace('$chosendb = comments;','$chosendb = wuhuws_$dir;','$chosendb');
fclose($fh);

$dir es una entrada de usuario. comments es una tabla en la base de datos que debe reemplazarse con el prefix_$dir.

¿Qué hago mal?

preguntado el 22 de mayo de 12 a las 21:05

Ni siquiera has leído del archivo. Simplemente le abriste un asa. Utiliza file_get_contents() para leerlo en una cadena. Sin embargo, vea @zerkms, esto no es una buena idea para empezar... -

@bfavaretto: ¡¡¡argh!!! ;-)-

@Christian: será mejor que expliques el porqué usted necesita que -

@Christian Porque es imposible depurar uno. Tus stacktraces pierden sentido cuando tu fuente puede cambiar así. Si desea cambiar los archivos de origen en función de las acciones realizadas en el sitio web, también puede representar páginas html completas y str_replace() esos cada vez que algo en la página necesita ser actualizado. -

@Christian Quiero decir, si tuviera una matriz en su archivo de configuración, ¿por qué no simplemente incluir (file.php) y realizar cambios "sobre la marcha" sin la necesidad de reemplazar el texto? -

1 Respuestas

Estás olvidando volver a escribir en el archivo.

// Read the file
$content = file_get_contents("$dir/submit.php");

// Do the editing
$content = str_replace('$chosendb = comments;','$chosendb = wuhuws_$dir;', $content);

// Save the file
file_put_contents("$dir/submit.php", $content);

Sin embargo, como dijo Zerkms (o al menos pretendía ;-) ), generalmente es un mala idea para editar PHP con PHP, especialmente porque le resultará difícil depurar su secuencia de comandos más tarde, ya que su código cambia dinámicamente durante el tiempo de ejecución.

¿Hay algún motivo por el que no pueda incluir este archivo y configurar manualmente estas variables, como:

// Include the file    
require("$dir/submit.php"); 
// Edit the variable
$chosendb = "wuhuws_$dir";

contestado el 22 de mayo de 12 a las 21:05

Le echaré un vistazo. Gracias :) - cristiano

Podría configurarlo manualmente, pero los usuarios deberían poder crear automáticamente una sala por sí mismos. Habitación = el proceso. :) Lo que hiciste al final de tu respuesta: ¿cómo hace lo que quiero? :) Solo necesito que me lo expliquen. - cristiano

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.