Foros del Web » Programando para Internet » PHP »

modificacion de .html con php

Estas en el tema de modificacion de .html con php en el foro de PHP en Foros del Web. bueno, estoy buscando la manera correcta de poder modificar una parte concreta de una web html , mediante php, es decir tengo un documento html, ...
  #1 (permalink)  
Antiguo 21/04/2013, 10:26
 
Fecha de Ingreso: noviembre-2012
Mensajes: 20
Antigüedad: 11 años, 5 meses
Puntos: 0
modificacion de .html con php

bueno, estoy buscando la manera correcta de poder modificar una parte concreta de una web html , mediante php, es decir

tengo un documento html, y quiero modificar, por ejemplo, el texto que aparece entre una palabra comentada, por ejemlo
//contenido
texto
texto
//finContenido

el problema es que no puedo saber de antemano el numero de lineas que ocupara el texto, ni el numero de caracteres ni nada
tampoco puedo saver el numero de lineas ni caracteres que ocupara el nuevo texto que quiero que aparezca reemplazando al anterior,

alguna ayuda con que metodos me podrian ayudar a formar mi script?
gracias
  #2 (permalink)  
Antiguo 21/04/2013, 12:23
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: modificacion de .html con php

Hice una clase que te puede ayudar.
La base es preg_match_all y son expresiones regulares así que podrás ampliarla.

Código PHP:
Ver original
  1. <?php
  2.  
  3. class Preg
  4. {
  5.     /**
  6.      * Texto de Apertura de la expresion regular.
  7.      * @var string
  8.      */
  9.     private $_txtApertura   = '<!-- INICIO -->';
  10.    
  11.     /**
  12.      * Texto de Cierre de la Expresion regular.
  13.      * @var string
  14.      */
  15.     private $_txtCierre     = '<!-- FIN -->';
  16.    
  17.     /**
  18.      * Expresion regular basica.
  19.      * @var string
  20.      */
  21.     private $_expresionRegular = '|%s(.*?)%s|s'; //'/<tag[^>]*>(.*?)<\/tag>/';
  22.    
  23.     /**
  24.      * Texto a ser Evaluado por la expresion regular.
  25.      * @var string
  26.      */
  27.     private $_texto = '';
  28.    
  29.     /**
  30.      * Contiene el Total de Coicncidencias.
  31.      * @var integer
  32.      */
  33.     private $_cantCoincidencias = 0;
  34.    
  35.     /**
  36.      * Contiene las coincidencias.
  37.      * @var array
  38.      */
  39.     private $_coincidencias     = array();
  40.  
  41.     /**
  42.      * Constructor de clase.
  43.      * @param   string $texto   Texto que se quiere evaluar por la expresion regular.
  44.      * @return  void
  45.      */
  46.     public function __construct($texto = null)
  47.     {
  48.         $this->_texto   = (isset($texto))? $texto : '';
  49.     }
  50.    
  51.     /**
  52.      * Configura el texto de apertura de la Expresion Regular.
  53.      * @param string $txt
  54.      */
  55.     public function setApertura($txt)
  56.     {
  57.         $this->_txtApertura = (isset($txt))? $txt : '<!-- INICIO -->' ;
  58.     }
  59.    
  60.     /**
  61.      * Configura el texto de Cierre de la Expresion Regular.
  62.      * @param string $txt
  63.      */
  64.     public function setCierre($txt)
  65.     {
  66.         $this->_txtCierre = (isset($txt))? $txt : '<!-- FIN -->' ;
  67.     }
  68.    
  69.    
  70.     /**
  71.      * Retorna la expresion regular que se utilizara.
  72.      * Meramente informativa.
  73.      * @return string
  74.      */
  75.     public function getExpresionRegular()
  76.     {
  77.         return sprintf($this->_expresionRegular, $this->_txtApertura, $this->_txtCierre);
  78.     }
  79.    
  80.     /**
  81.      * Texto sobre el cual se aplicara el analisis.
  82.      * @param string    $texto      Texto a analizar.
  83.      * @param boolean   $agregar    False remueve el viejo texto y solo permanecera el nuevo.
  84.      *                              True  agrega el texto al final del anterior.  
  85.      */
  86.     public function setTexto($texto, $agregar= false)
  87.     {
  88.         if ($agregar) {
  89.             $this->_texto   = $this->_texto . $texto ;
  90.         } else {
  91.             $this->_texto   = $texto;
  92.         }
  93.     }
  94.    
  95.     /**
  96.      * Extrae todas las coincidencias del texto correspondiente.
  97.      * @return integer  Cantidad de coincidencias.
  98.      */
  99.     public function extraerBloques()
  100.     {
  101.         $this->_cantCoincidencias = preg_match_all($this->getExpresionRegular(), $this->_texto, $this->_coincidencias, PREG_PATTERN_ORDER );
  102.         if ($this->_cantCoincidencias) {
  103.             $this->_coincidencias = $this->_coincidencias[1];
  104.         } else {
  105.             $this->_coincidencias = array();
  106.         }
  107.        
  108.         return $this->_cantCoincidencias;
  109.     }
  110.    
  111.     /**
  112.      * Retorna un arreglo con todas las coincidencias.
  113.      * @return array
  114.      */
  115.     public function getCoincidencias()
  116.     {
  117.         return $this->_coincidencias;
  118.     }
  119. }
  120.  
  121. // Aqui instanciamos la clase y si queremos podemos en este momento darle la frase de busqueda.
  122. // o tambien podemos ponerla mas tarde con setTexto
  123. $a = new Preg('//contenido
  124. texto
  125. texto
  126. //finContenido');
  127. // Definimos el bloque que dará apertura a la búsqueda
  128. $a->setApertura('//contenido');
  129. // Definimos el bloque que dará cierre a la búsqueda
  130. $a->setCierre('//finContenido');
  131. // Si da algun resultado muestra los mismos si no
  132. // nos pone que no hay coincidencias.
  133. if($a->extraerBloques()) {
  134.     var_dump($a->getCoincidencias());
  135. } else {
  136.     echo 'Sin coincidencias';
  137. }

Recuerda inlcuir la clase en tu codigo.

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #3 (permalink)  
Antiguo 23/04/2013, 04:39
 
Fecha de Ingreso: noviembre-2012
Mensajes: 20
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: modificacion de .html con php

te agradezco el aporte,
sin embargo,
he seguido buscando estos dias, y sigo sin encontrar un metodo en php que me permita borrar el texto existente entre dos palabras clave,

y todabia no estoy seguro de como situar el "puntero" tras la palabara clave, tras haber borrado el texto, para comenzar a escribir con fwrite(), ya que fwrite no me permite especificar en que posicion del texto quiero comenzar a escribir.

gracias
  #4 (permalink)  
Antiguo 23/04/2013, 05:10
 
Fecha de Ingreso: marzo-2013
Ubicación: Jaén, Andalucía
Mensajes: 129
Antigüedad: 11 años
Puntos: 2
Respuesta: modificacion de .html con php

y si pruebas algo con AJAX?
  #5 (permalink)  
Antiguo 23/04/2013, 09:21
 
Fecha de Ingreso: noviembre-2012
Mensajes: 20
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: modificacion de .html con php

ajax no es una opcion para mi caso, necesito que se ejecute del lado del servidor
  #6 (permalink)  
Antiguo 23/04/2013, 09:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: modificacion de .html con php

¿Ya consultaste el manual?

Existen muchas funciones para trabajar con cadenas de texto, buscar texto, etc.

Me sorprende que en lugar de consultar el manual para buscar herramientas abras un tema para que te manden a consultar el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 23/04/2013, 09:46
 
Fecha de Ingreso: abril-2013
Mensajes: 60
Antigüedad: 11 años
Puntos: 2
Respuesta: modificacion de .html con php

bueno a lo q entendi, necesitas camabiar un texto por otro, solo con php, y como parametros solo se tiene dos "palabras clave "que encapsulan el texto... ps bueno algo asi hace el siguiente codigo, espero t ayude.. salu2

Código PHP:
Ver original
  1. $contenido = "<palabra_clave>Hello world</palabra_clave>";
  2. echo $contenido."</br>";
  3. $nuevo_contenido = "hola mundo!!!!";
  4. $length= strcspn($contenido,"<",15);
  5. echo substr_replace($contenido,$nuevo_contenido,15,$length);

Etiquetas: html, modificacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:46.