Foros del Web » Programando para Internet » PHP »

Como realizo la siguiente operacion con php

Estas en el tema de Como realizo la siguiente operacion con php en el foro de PHP en Foros del Web. Hola a todos tengo la siguiente duda y pido vuestra ayuda para resolver loq que intento hacer tengo un texto <img src='images/hola.jpg' alt='hola'>Ejemplo aquí Ejemplo ...
  #1 (permalink)  
Antiguo 04/05/2012, 16:09
 
Fecha de Ingreso: octubre-2009
Mensajes: 104
Antigüedad: 14 años, 6 meses
Puntos: 0
Como realizo la siguiente operacion con php

Hola a todos tengo la siguiente duda y pido vuestra ayuda para resolver loq que intento hacer

tengo un texto

<img src='images/hola.jpg' alt='hola'>Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí <b>Ejemplo aquí</b> Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí

Lo que quiero es sacar la "<img src='images/hola.jpg' alt='hola'>" y dejar el texto sin esa etiqueta solamente y dejar las demas etiquetas como <b>, etc... pero a la ves nesecito guardar <img src='images/hola.jpg' alt='hola'> en alguna variable.

Algo asi como que tener:

$texto = "Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí <b>Ejemplo aquí</b> Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí ";

$imagen = "<img src='images/hola.jpg' alt='hola'>" ;

Saludos y espero me puedan ayudar...
  #2 (permalink)  
Antiguo 04/05/2012, 17:00
fiu
 
Fecha de Ingreso: diciembre-2006
Ubicación: Barcelona
Mensajes: 128
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Como realizo la siguiente operacion con php

hola,

con strrpos podrias buscar el inicio del tag:
strrpos($texto,"<img")
guardas esa posicion y luego buscas el final del tag, a partir de esa posicion:
strrpos($texto,">",$posicion1)
ahora ya tendrias la posicion inicial y la final, y con substr puedes meter todo el codigo de la imagen en otra variable:
substr($texto, $posicion1, $longitud); // (longitud seria posicion2 - posicion1

links:
http://php.net/manual/en/function.strrpos.php
http://www.php.net/manual/en/function.substr.php
  #3 (permalink)  
Antiguo 04/05/2012, 17:02
fiu
 
Fecha de Ingreso: diciembre-2006
Ubicación: Barcelona
Mensajes: 128
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Como realizo la siguiente operacion con php

ah si, olvidé quitar la imagen del texto,

usas substr_replace ($texto , "" , $pos1, $long)

(http://www.php.net/manual/en/functio...tr-replace.php)
  #4 (permalink)  
Antiguo 04/05/2012, 17:11
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Como realizo la siguiente operacion con php

Para lograr eso es necesario usar expresiones regulares, te dejo un ejemplo, pero te advierto que no soy "experto"en expresiones regulares, seguramente se puede mejorar muchísimo el ejemplo que te dejo...

Código PHP:
Ver original
  1. <?php
  2. $texto = "<img src='images/hola.jpg' alt='hola'>Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí <b>Ejemplo aquí</b> Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí ";
  3.  
  4. preg_match_all('/\<img src=\'(.*?)\' alt=\'(.*?)\'\>/',$texto,$coincidencias);
  5.  
  6. echo '<pre>';
  7. var_dump($coincidencias);
  8. echo '</pre>';
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 04/05/2012, 17:23
 
Fecha de Ingreso: octubre-2009
Mensajes: 104
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Como realizo la siguiente operacion con php

Hola pero no me funcionan.... no me funcionan de ninguna forma...

que podria ser
  #6 (permalink)  
Antiguo 04/05/2012, 17:25
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Como realizo la siguiente operacion con php

Probaste el código que te deje? a mi me funciona correctamente...

Código PHP:
Ver original
  1. array(3) {
  2.   [0]=>
  3.   array(1) {
  4.     [0]=>
  5.     string(38) "<img src='images/hola.jpg' alt='hola'>"
  6.   }
  7.   [1]=>
  8.   array(1) {
  9.     [0]=>
  10.     string(15) "images/hola.jpg"
  11.   }
  12.   [2]=>
  13.   array(1) {
  14.     [0]=>
  15.     string(4) "hola"
  16.   }
  17. }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #7 (permalink)  
Antiguo 04/05/2012, 17:33
 
Fecha de Ingreso: octubre-2009
Mensajes: 104
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Como realizo la siguiente operacion con php

me da esto:
Código Javascript:
Ver original
  1. array(3) {
  2.   [0]=>
  3.   array(1) {
  4.     [0]=>
  5.     string(38) "hola"
  6.   }
  7.   [1]=>
  8.   array(1) {
  9.     [0]=>
  10.     string(15) "images/hola.jpg"
  11.   }
  12.   [2]=>
  13.   array(1) {
  14.     [0]=>
  15.     string(4) "hola"
  16.   }
  17. }
  #8 (permalink)  
Antiguo 04/05/2012, 17:34
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Como realizo la siguiente operacion con php

Muestra el "texto" donde estas haciendo la búsqueda...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #9 (permalink)  
Antiguo 04/05/2012, 17:37
 
Fecha de Ingreso: octubre-2009
Mensajes: 104
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Como realizo la siguiente operacion con php

Código PHP:
Ver original
  1. $texto = "<img src='images/hola.jpg' alt='hola'>Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí <b>Ejemplo aquí</b> Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí ";
  2.  
  3. preg_match_all('/\<img src=\'(.*?)\' alt=\'(.*?)\'\>/',$texto,$coincidencias);
  4.  
  5. echo '<pre>';
  6. var_dump($coincidencias);
  7. echo '</pre>';
  #10 (permalink)  
Antiguo 04/05/2012, 17:47
Avatar de Vector_Latino  
Fecha de Ingreso: mayo-2012
Mensajes: 25
Antigüedad: 11 años, 11 meses
Puntos: 6
Respuesta: Como realizo la siguiente operacion con php

Hola, estuve haciendo un código muy fácil de usar, es este:

Código PHP:
Ver original
  1. <?php
  2. function mostrarCode($a,$b,$c){if(eregi($a,$c)){$d=explode($a,$c);$d=$d[1];$d=explode($b,$d);$d=$d[0];return $a.$d.$b;}else{return false;}}
  3. function vecMostrar($e,$a,$b){$vecMostrar['html']=$e;$vecMostrar['img']=false;while(strpos($vecMostrar['html'],$a)!==false){$vecMostrar['img'][]=mostrarCode($a,$b,$vecMostrar['html']);$vecMostrar['html']=str_ireplace($vecMostrar['img'],'',$vecMostrar['html']);}return $vecMostrar;}
  4. ?>

cree 2 funciones:
  1. Función mostrarCode que simplemente retorna el primer elemento que encuentre que empiece con $desde y termine con $hasta
  1. Función vecMostrar que retorma un array con 2 posiciones, la primera es ['html'] que seria el codigo html sin las imágenes en este caso y ['img'] que retorna un array con todas las imágenes encontradas, cada imagen esta en una posición.

la función vecMostrar no guarda imágenes repetidas en caso de que se usen varias veces una imagen.

para usar solo es asignar a una variable, ejemplo:

Código PHP:
Ver original
  1. $html = "<img src='http://vectorlatino.net/Img/Logo.png' alt='hola1'>Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí <b>Ejemplo aquí</b> Ejemplo aquí Ejemplo<img src='https://ssl.gstatic.com/images/icons/gplus-64.png' alt='hola2'> aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí <img src='http://vectorlatino.net/Img/social.png' alt='hola3'>Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí Ejemplo aquí";
  2.    
  3.     $vector = vecMostrar($html,'<img', '>');
  4.    
  5.     echo '<b>HTML original:</b> <hr>'.$html.'<hr>';
  6.  
  7.     //para mostrar html limpio.
  8.     echo '<b>HTML sin imagenes: </b><hr>'.$vector['html'].'<hr>';
  9.  
  10.     //para las imagenes
  11.     echo
  12.     '<b>hay '.count($vector['img']).' imagenes, la primera es : </b><hr>'.
  13.     $vector['img'][0].'<hr>';

espero que te sirva, saludos.

Última edición por Vector_Latino; 04/05/2012 a las 18:27

Etiquetas: Ninguno
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 03:53.