#native_company# #native_desc#
#native_cta#

Recursive text replace within files

By Juan Carlos
on June 8, 2006

Version: 1

Type: Full Script

Category: File Management

License: GNU General Public License

Description: * Script para remplazar un texto por otro en los archivos de un directorio especificado

* Script that will replace a text within some files contained in a specified directory

<?php
	/**
	 * Script para remplazar un texto por otro en los archivos de un directorio especificado
	 * Script that will replace a text within some files contained in a specified directory
	 * @author Juan Carlos Gonzlez <[email protected]>
	 */

	$texto_buscar 		   = "[email protected]"; 		// Text to search
	$texto_remplazar 	   = "jcgonz@localhost";	// Texto to replace with
	$directorio_busqueda   = 'C:Innoxcomwwwesi'; // Directory
	$patron_nombre_archivo = "Root";				// File pattern

	// Obtenemos los archivos
	$archivos = getRArchivosDirectorio($directorio_busqueda, 
									   $patron_nombre_archivo);

	// comenzamos el remplazo
	foreach ($archivos as $archivo) {
		$exito = FALSE;
		$contenido = file_get_contents($archivo);
		$contenido = preg_replace("/$texto_buscar/", 
								  $texto_remplazar, 
								  $contenido,
								  -1,
								  $exito);
		
		if ($exito) {
			$fp = fopen($archivo, "w");
			if ($fp) {
				fputs($fp, $contenido);
				fclose($fp);
			}
		}
	}
	// fin
	
	
/**
 * Funciones
 */

	/**
     * Funcin que recursivamente regresa todos los archivos de acuerdo al
     * $patron de un directorio especificado
     *
     * @param char $directorio
     * @param char $patron
     * @return array
     */
    function getRArchivosDirectorio($directorio, $patron = NULL) {
		$cw_original = getcwd();
		chdir($directorio);
		$entradas = array();
		if (is_dir($directorio)) {
			$entradas = scandir($directorio);
		}
		$archivos = array();
		foreach ($entradas as $entrada) {
			if ($entrada != '.' 
				&& $entrada != '..') {
					$entrada = realpath($entrada);
					if (is_dir($entrada)) {
						$archivos = array_merge($archivos, getRArchivosDirectorio($entrada, $patron));
					} else {
						$agregar = TRUE;
						if (!is_null($patron)) {
							$agregar = preg_match("/$patron/", $entrada);
						}
						
						if ($agregar) {
							$archivos[] = $entrada;
						}
					}
			}
		}
		chdir($cw_original);
		return $archivos;
	}

?>