Foros del Web » Programando para Internet » PHP »

Insertar un Tag HTML dentro de una cadena HTML dada una posición

Estas en el tema de Insertar un Tag HTML dentro de una cadena HTML dada una posición en el foro de PHP en Foros del Web. Hola!, voy al grano. Estoy intentando insertar un elemento HTML dentro de un contenido HTML en una determinada posición mediante tratamiento de cadenas. Sería el ...
  #1 (permalink)  
Antiguo 07/04/2008, 16:41
 
Fecha de Ingreso: noviembre-2004
Mensajes: 117
Antigüedad: 19 años, 5 meses
Puntos: 0
Exclamación Insertar un Tag HTML dentro de una cadena HTML dada una posición

Hola!, voy al grano. Estoy intentando insertar un elemento HTML dentro de un contenido HTML en una determinada posición mediante tratamiento de cadenas.

Sería el típico efecto de insertar una imagen o banner aleatorio dentro de un contenido HTML. En concreto en este caso lo que quiero es insertar un <div> dentro de una cadena con contenido HTML sin que se deforme el contenido, al menos que no corte ninguna etiqueta o rompa alguna palabra.

Desarrolle varias funciones y tengo una de ellas en práctica pero estoy dandole vueltas todavia como hacerlo mejor.

Por ahora uso esto:

Código PHP:
function div_into_string($str_div,$str$n) {
    
$tamano $n
    
$contador 0
    
$texto $str
    
$div $str_div;
    
// Cortamos la cadena por los espacios 
    
$arrayTexto split(' ',$texto); 
    
$texto ''
    
// Reconstruimos la cadena 
    
while(next($arrayTexto)){ 
        if(
$contador==$n){
            
$texto .= $div
        }else{
            
$texto .= ' '.$arrayTexto[$contador]; 
        }
        
$contador++;
    } 
    return 
$texto

Y no me va mal, pero por alguna razón no llega a mostrarme el texto completo (se come el ultimo caracter) y no doy con la tecla

Me he repateao la inet buscando alternativas e ideas que puedan ayudarme y he visto cosas interesantes tal que así:
http://www.greywyvern.com/code/php/htmlwrap.php (que seria un sucedaneo del wordwrap)

Os dejo algunas referencias, a ver si algun phpero experto del foro se apunta, yo soy algo nuevo en esto del php.

http://www.usenet-forums.com/php-lan...aragraphs.html
http://es2.php.net/substr_replace
__________________
Saludos a todos ;)

Fiat en Malaga
.. y ahora con CSS!

Última edición por Nono Martínez; 09/04/2008 a las 10:03 Razón: Quité las referencias al sitio de desarrollo porque aparecía en google...
  #2 (permalink)  
Antiguo 07/04/2008, 16:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Insertar un Tag HTML dentro de una cadena HTML dada una posición

Si entiendo un poco lo que quieres hacer es por decir, si tienes esto:
Código HTML:
contenidohtml
<div id="banner"></div>
mas contenido html
Hacer esto:
Código HTML:
contenido html
<div id="banner">banner aleatorio</div>
mas contenido html
  #3 (permalink)  
Antiguo 08/04/2008, 02:40
 
Fecha de Ingreso: noviembre-2004
Mensajes: 117
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: Insertar un Tag HTML dentro de una cadena HTML dada una posición

Dado un texto HTML cualquiera:

Código HTML:
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> 
Insertar un <div> o un <img> en una posición dada (por ejemplo en la posición 42)

Código HTML:
<p>Lorem ipsum dolor sit amet, consectetur <div>banner aqui</div> adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> 
Con miras a realizar una función que añada un banner aleatorio en la mitad de cualquier contenido dinamico, la idea es que no corte ninguna palabra ni deje nigun Tag mal cerrado. Creo que esta función es bastante util para partir textos y colocar imagenes o banners sin que deforme el contenido HTML (y por tanto pueda afectar al resto de la web)

No se si me explico.

(gracias por pasar un rato con mi problema)
__________________
Saludos a todos ;)

Fiat en Malaga
.. y ahora con CSS!
  #4 (permalink)  
Antiguo 08/04/2008, 08:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Insertar un Tag HTML dentro de una cadena HTML dada una posición

Prueba así:
Código PHP:
function div_into_string($str_div,$str$n) {
       
$pre substr$str0$n );
       
$post substr$str$n );

       return 
$str $str_div $post;

Saludos.
  #5 (permalink)  
Antiguo 08/04/2008, 17:42
 
Fecha de Ingreso: noviembre-2004
Mensajes: 117
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: Insertar un Tag HTML dentro de una cadena HTML dada una posición

Gracias, es una solucion bastante mas sencilla que la mía, y hasta aquí me quedé, la pega que tengo es que no puedo partir el texto de cualquier manera.

Voy a revisarla para que inserte el texto en el siguiente espacio y fuera del tag HTML.

Aqui se complica, ¿Alguna sugerencia?
__________________
Saludos a todos ;)

Fiat en Malaga
.. y ahora con CSS!
  #6 (permalink)  
Antiguo 08/04/2008, 17:46
 
Fecha de Ingreso: noviembre-2004
Mensajes: 117
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: Insertar un Tag HTML dentro de una cadena HTML dada una posición

Esto ocurre:


<div id=extra>
<ul>
<li>Marketing</li>
<li>Innovación</li>
<li>Otras palabras </li>
<li>Clave aqui</li>
<li>Innoteca </li></ul></div>ica, en pocas palabras, [...]
__________________
Saludos a todos ;)

Fiat en Malaga
.. y ahora con CSS!

Última edición por Nono Martínez; 09/04/2008 a las 10:03 Razón: Quite las refencias al sitio de desarrollo, aparecian en Google
  #7 (permalink)  
Antiguo 08/04/2008, 20:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Insertar un Tag HTML dentro de una cadena HTML dada una posición

No entiendo lo que propones hacer, ya que el codigo que te puse hace exactamente lo que pides.

Saludos.
  #8 (permalink)  
Antiguo 08/04/2008, 21:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: Insertar un Tag HTML dentro de una cadena HTML dada una posición

Que te parece si usas una expresion regular para reemplazar?

Código PHP:
$html preg_replace('/(<div\s+id=extra>)(.+?)*(<\/div>)/is'"\\1{$banner}\\3"$html); 
Incluso, reemplazaria el contenido en el DIV...

Última edición por pateketrueke; 08/04/2008 a las 21:32 Razón: delimitadores //is
  #9 (permalink)  
Antiguo 09/04/2008, 09:59
 
Fecha de Ingreso: noviembre-2004
Mensajes: 117
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: Insertar un Tag HTML dentro de una cadena HTML dada una posición

Cita:
Iniciado por GatorV Ver Mensaje
No entiendo lo que propones hacer, ya que el codigo que te puse hace exactamente lo que pides.

Saludos.

Creo que e expresado en varios tips cual es mi problema y parece que se entiende bien, a veces uno se ofusca escribiendo rapido, podria ser eso lo que me ha pasado al redactar.

Ahora mismo estoy usando tu funcion, se vé en el link que puse -que por cierto lo tengo que quitar ya porque me van a matar, es un link de desarrollo y ya aparece en Google despues de postearlo aquí.

La funcion no cuida de que la posicion se mueva a un espaciado si cae en mitad de una palabra y partiría cualquier palabra (vease el ejemplo) y si la posición cae dentro de un tag htm debería de escapar fuera,

La premisa de los tips eran: "Que no deforme el contenido HTML".

Era por tomar ideas, ahora me toca picarlo,

Gracias a todos!
antonio
__________________
Saludos a todos ;)

Fiat en Malaga
.. y ahora con CSS!
  #10 (permalink)  
Antiguo 09/04/2008, 10:02
 
Fecha de Ingreso: noviembre-2004
Mensajes: 117
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: Insertar un Tag HTML dentro de una cadena HTML dada una posición

Cita:
Iniciado por pateketrueke Ver Mensaje
Que te parece si usas una expresion regular para reemplazar?

Código PHP:
$html preg_replace('/(<div\s+id=extra>)(.+?)*(<\/div>)/is'"\\1{$banner}\\3"$html); 
Incluso, reemplazaria el contenido en el DIV...
Gracias! Probaré a ver y te digo :) tiene buena pita, me encanta usar expresiones regulares para tratar con cadenas, para el problema de que no me parta un tag html es mas que ideal.


A ver si termino la funcion y la posteo aquí, contad con ello
__________________
Saludos a todos ;)

Fiat en Malaga
.. y ahora con CSS!
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 00:27.