Autor Tema: ( SOLUCIONADO ) Modificar archivo de forma aleatoria  (Leído 146 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado remizero

  • Novato
  • *
  • Mensajes: 39
  • Puntuación: 2
  • Sexo: Masculino
    • Ver Perfil
    • Un mundo abierto... Un mundo libre
( SOLUCIONADO ) Modificar archivo de forma aleatoria
« : 09 de febrero de 2012, 11:52:38 pm »
Buenas amigos del foro.

Tengo un problema al cual no le consigo solución y vengo por aquí a ver si me pueden orientar para poder resolverlo. El problema es el siguiente:

Tengo un archivo de configuración en php, el cual debo modificar en algún momento, pero solo tengo que modificar algunas lineas.

Por ejemplo, suponiendo que este es mi archivo de configuración:

Código: [Seleccionar]
define ( 'ESPACIO_DE_TRABAJO', realpath ( './ruta/del/espacio/de/trabajo/' ) );
define ( 'RUTA_ADMIN', realpath ( './ruta/del/adminnistrador/' ) );
define ( 'RUTA_CONFIG', realpath ( './ruta/de/configuracion/' ) );
define ( 'RUTA_CTRL', realpath ( './ruta/del/controllador/' ) );
.
.
.

quiero modificar por ejemplo

Código: [Seleccionar]
define ( 'ESPACIO_DE_TRABAJO', realpath ( './ruta/del/espacio/de/trabajo/' ) );

por

Código: [Seleccionar]
define ( 'ESPACIO_DE_TRABAJO', realpath ( './NUEVA/RUTA/DEL/ESPACIO/DE/TRABAJO/' ) );

como podría hacer esto?, se que en otros lenguajes se logra con acceso aleatorio de archivos, pero este concepto no lo veo muy claro con php.

De antemano muchas gracias.
« Última Modificación: 10 de febrero de 2012, 11:53:11 pm por remizero »
Si quieres ver realmente cambios, comienza por cambiar tu primero.

Desconectado remizero

  • Novato
  • *
  • Mensajes: 39
  • Puntuación: 2
  • Sexo: Masculino
    • Ver Perfil
    • Un mundo abierto... Un mundo libre
Re:Modificar archivo de forma aleatoria
« Respuesta #1 : 10 de febrero de 2012, 11:52:40 pm »
Que más amigos del foro.

Les cuento que logré solucionar el problema aunque no se si de la manera más óptima.

la estrategia que apliqué fué la siguiente:

Código: [Seleccionar]
//copio y renombro el archivo en cuestión, el cual usaré como un archivo temporal
copy ( "arc_config.php", "arc_temp.php" );

//luego abro el archivo temporal como lectura
$arc_temp = fopen ( "arc_temp.php","r" );

//luego abro el archivo original solo escritura
$arc_config = fopen ( "arc_config.php","w" );

// centinela que uso para no volver a verificar las constantes después de conseguida la primera ocurrencia (solo conveniencia :P)
$define = 0;

// bucle para leer el archivo
while ( !feof ( $arc_temp ) ) {

    // leo linea a linea el archivo temporal
    $lineaLeida = fgets ( $arc_temp, 1024 );

    // verifico si la linea leída contiene la definición de constante
    if ( ( preg_match ( '/^define/', $lineaLeida ) ) && ( $define == 0 ) ) {

        $define++;

        // como es la primera constante verifico que posea la definición que estoy buscando
        if ( preg_match ( '/ESPACIO_DE_TRABAJO/', $lineaLeida ) ) {


            //para ubicarme en la posición de la cadena para obtener el substring que quiero reemplazar
            $pos = strpos ( $lineaLeida, "realpath" );
            $tamSubCadena = strlen ( "realpath ( '" );

            // se reemplaza el substring por el que quiero
            $lineaModificada = str_replace ( substr ( $lineaLeida, $pos + $tamSubCadena, -8 ), './nueva/ruta/del/espacio/de/trabajo/', $lineaLeida ) );
        }

        // escribo la linea modificada en el archivo original que estoy reescribiendo
        fwrite ( $arc_config, $lineaModificada );
       
    } else {

        // escribo la linea que no se modifica nuevamente en el archivo original que estoy reescribiendo
        fwrite ( $arc_config, $lineaLeida );
    }
}

fclose ( $arc_temp );
fclose ( $arc_config );
// por ùltimo borro el archivo temporal
unlink ( $arc_temp );

espero les sirva también a ustedes.

Gracias de todas formas, hasta otra oportunidad.
Si quieres ver realmente cambios, comienza por cambiar tu primero.

PHP de Venezuela

Re:Modificar archivo de forma aleatoria
« Respuesta #1 : 10 de febrero de 2012, 11:52:40 pm »

 

PHP de Venezuela on Facebook