¿Puedo str_replace en otro archivo?
Frecuentes
Visto 784 veces
2
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?
1 Respuestas
2
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 php str-replace or haz tu propia pregunta.
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... - Michael Berkowski@bfavaretto: ¡¡¡argh!!! ;-)- zerkms
@Christian: será mejor que expliques el porqué usted necesita que - zerkms
@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. - Mike B@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? - djot