Foros del Web » Programando para Internet » PHP »

Remplazar img por texto. Por que no me anda?

Estas en el tema de Remplazar img por texto. Por que no me anda? en el foro de PHP en Foros del Web. Alguien me puede decir que estoy haciendo mal? Les comento lo que estoy haciendo. Tengo una variable $contenido la cual tiene texto e imágenes. Lo ...
  #1 (permalink)  
Antiguo 01/11/2010, 10:53
 
Fecha de Ingreso: noviembre-2006
Mensajes: 169
Antigüedad: 17 años, 5 meses
Puntos: 0
Información Remplazar img por texto. Por que no me anda?

Alguien me puede decir que estoy haciendo mal?

Les comento lo que estoy haciendo.

Tengo una variable $contenido la cual tiene texto e imágenes.

Lo que quiero hacer es remplazar las imágenes por un texto (ej texto aquí una imagen)

Hasta aquí lo comentado es la idea general.

Bien pero hay dos detalles que me están volviendo loco…

Primer detalle…

Cada imagen tiene el nombre de una persona. Ej juan.jpg por lo que yo quiero cambiar la imagen por el siguiente texto “esta es la imagen de juan…”

Pero este script... como quiero que sea dinámico puede tener muchas imágenes juan.jpg pedro.jpg manuel.jpg con sus respectivos nombres y textos a remplazar.

Entonces cree una base de datos donde guardo solo el nombre de la imagen sin jpg y el texto por el que debería remplazar

Aquí muestro la tabla


CREATE TABLE `nombres` (
`id` int(11) NOT NULL auto_increment,
`nombre` varchar(50) NOT NULL,
`texto` varchar(250) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;

--
-- Volcar la base de datos para la tabla `nombres`
--

INSERT INTO `nombres` VALUES (1, 'pedro', 'texto de pedro');
INSERT INTO `nombres` VALUES (2, 'juan', 'texto de juan');
INSERT INTO `nombres` VALUES (3, 'Manuel', 'texto de Manuel');


Bien entonces al tener una base de datos con los nombres hice esto

$consulta="SELECT * FROM nombres ";
$resultado=mysql_query($consulta);
while($row=mysql_fetch_array($resultado))
{
$nombre=$row["nombre"];
$texto=$row["texto"];

$parser1='|<img (.*?)'.$nombre.'(.*?) />|is';

// remplazo
$contenido=preg_replace($parser1,"XXXXX ".$texto." XXXXXXX",$contenido);
}

echo $contenido;


pero no funciona…

y les digo bien cual es el error de este script

si tengo este contenido

$contenido='
<p>

<img style="float: left;" src="img/juan.jpg" alt="" />

El diseño gráfico es una profesión cuya actividad es la acción de concebir, programar, proyectar y realizar comunicaciones visuales, producidas en general por medios industriales y destinadas a transmitir mensajes específicos a grupos sociales determinados. Esta es la actividad que posibilita comunicar gráficamente ideas, hechos y valores procesados y sintetizados en términos de forma y comunicación, factores sociales, culturales, económicos, estéticos y tecnológicos. También se conoce con el nombre de “diseño en comunicación visual”, debido a que algunos asocian la palabra gráfico únicamente a la industria gráfica, y entienden que los mensajes visuales se canalizan a través de muchos medios de comunicación, y no solo los impresos.

</p>

<p style="text-align: center;">
<img src="img/Manuel.jpg" alt="" />
</p>

<p>
Dado el crecimiento veloz y masivo en el intercambio de información, la demanda de diseñadores gráficos es mayor que nunca, particularmente a causa del desarrollo de nuevas tecnologías y de la necesidad de prestar atención a los factores humanos que escapan a la competencia de los ingenieros que las desarrollan.
</p>

<p style="text-align: center;">
<img src="img/fer.jpg" alt="" />
</p>


<p>
<img src="img/pedro.jpg" alt="" />
</p>';


si tengo eso solo me muestra esto al darle echo al contenido

XXXXX Nombre: pedro XXXXXXX

No muestra el texto ni nada… solo muestra esto…

Que estoy haciendo mal?

Les dejo el código en limpio y después les comento el segundo detalle el cual posiblemente no me funciona por culpa del primero…

Código PHP:

$contenido
='
<p>

<img style="float: left;" src="img/juan.jpg" alt="" />

El diseño gráfico es una profesión cuya actividad es la acción de concebir, programar, proyectar y realizar comunicaciones visuales, producidas en general por medios industriales y destinadas a transmitir mensajes específicos a grupos sociales determinados. Esta es la actividad que posibilita comunicar gráficamente ideas, hechos y valores procesados y sintetizados en términos de forma y comunicación, factores sociales, culturales, económicos, estéticos y tecnológicos. También se conoce con el nombre de “diseño en comunicación visual”, debido a que algunos asocian la palabra gráfico únicamente a la industria gráfica, y entienden que los mensajes visuales se canalizan a través de muchos medios de comunicación, y no solo los impresos.

</p>

<p style="text-align: center;">
<img src="img/Manuel.jpg" alt="" />
</p>

<p>
Dado el crecimiento veloz y masivo en el intercambio de información, la demanda de diseñadores gráficos es mayor que nunca, particularmente a causa del desarrollo de nuevas tecnologías y de la necesidad de prestar atención a los factores humanos que escapan a la competencia de los ingenieros que las desarrollan.
</p>

<p style="text-align: center;">
<img src="img/fer.jpg" alt="" />
</p>


<p>
<img src="img/pedro.jpg" alt="" />
</p>'
;


$consulta="SELECT * FROM nombres ";
$resultado=mysql_query($consulta);
while(
$row=mysql_fetch_array($resultado))
{
$nombre=$row["nombre"];     

$parser1='|<img (.*?)'.$nombre.'(.*?) />|is';

// remplazo
$contenido=preg_replace($parser1,"XXXXX Nombre: ".$nombre." XXXXXXX",$contenido);
}

echo 
$contenido
  #2 (permalink)  
Antiguo 02/11/2010, 06:09
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Remplazar img por texto. Por que no me anda?

Código PHP:
Ver original
  1. $consulta="SELECT * FROM nombres ";
  2. $resultado=mysql_query($consulta);
  3. $nombre = array();
  4. while($row=mysql_fetch_array($resultado))
  5. {
  6.    $nombre[] =$row["nombre"];
  7. }
  8. $parser1="/<img src=\"img\/(".implode('|', $nombre).")\.(?:jpg|gif|png)\" alt=\"\" \/>/is";
  9.  
  10. // remplazo
  11. $contenido=preg_replace($parser1,"XXXXX Nombre: $1 XXXXXXX",$contenido);
  12.  
  13. echo $contenido;

Prueba ese código y me avisas cualquier cosa.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 02/11/2010, 06:42
 
Fecha de Ingreso: noviembre-2006
Mensajes: 169
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Remplazar img por texto. Por que no me anda?

Hola Spider, entiendo por donde viene la mano. Primero creaste un array para el patrón de nombres a remplazar.

Segundo cambiaste la expresión regular la cual veo que era la que daba problemas.

Pero una cosa que veo es que a la primer imagen no la cambia.

<p>
<img style="float: left;" src="img/juan.jpg" alt="" />
El diseño gráfico es una profesión cuya actividad es …. Sigue sigue sigue…

Ahora te pregunto otra cosa…

Se puede hacer que desde las expresiones regulares identifique si la imagen esta centrada o tiene un float left o right?

Se puede por ejemplo en ves de crear un solo parser por vuelta de bucle cree 3? Uno para float left otro para right y otro para cuando esta centrado?

Por ejemplo algo asi

// uno para cuando es float: left
$parser1[]="/<img style=\"float: left;\" src=\"img\/(".implode('|', $nombre).")\.(?:jpg|gif|png)\" alt=\"\" \/>/is";
$remplaza[]="XXX Img Float left remplazada XXX”



// uno para cuando es float: right
$parser1[]="/<img style=\"float: rigth;\" src=\"img\/(".implode('|', $nombre).")\.(?:jpg|gif|png)\" alt=\"\" \/>/is";
$remplaza[]="XXX Img Float right remplazada XXX”

// uno para cuando la imagen esta centrada
$parser1[]="\<p style=\"text-align\: center;\"\>/<img src=\"img\/(".implode('|', $nombre).")\.(?:jpg|gif|png)\" alt=\"\" \/>\</\p\>/is";

$remplaza[]="XXX Img centrada remplazada XXX”

Me explico?

Es posible hacer que remplace la imagen creando tres patrones ( centrado derecha, izq y centro ) y que según el que tome te diga si la imagen remplazada tenia algún tipo de alineado o centrado?
  #4 (permalink)  
Antiguo 02/11/2010, 13:00
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Remplazar img por texto. Por que no me anda?

Solo tendrías que agregar algo como esto :

Código PHP:
Ver original
  1. "/<img style=\"(float: (left|right)|text-align : center);\" src=\"img\/(".implode('|', $nombre).")\.(?:jpg|gif|png)\" alt=\"\" \/>/is";

La verdad creo que sería así. Solo tendrías que reemplazar, y adentrarte más en el mundo de las RegExp.

PD : No aseguro que te funcione. No lo probé.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 02/11/2010, 13:03
 
Fecha de Ingreso: noviembre-2006
Mensajes: 169
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Remplazar img por texto. Por que no me anda?

ok, y la primera por que no remplaza la primer imagen?

$parser1="/<img src=\"img\/(".implode('|', $nombre).")\.(?:jpg|gif|png)\" alt=\"\" \/>/is";
  #6 (permalink)  
Antiguo 02/11/2010, 15:34
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Remplazar img por texto. Por que no me anda?

Es que la primera imagen, tenía un trozo de texto que no incluí en la RegExp, porque simplemente no la había visto .

Código PHP:
Ver original
  1. $parser1="/<img(?:\sstyle=\"float: left;\"\s)?src=\"img\/(".implode('|', $nombre).")\.(?:jpg|gif|png)\" alt=\"\" \/>/is";

Prueba eso.

Saludos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #7 (permalink)  
Antiguo 02/11/2010, 21:32
 
Fecha de Ingreso: noviembre-2006
Mensajes: 169
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Remplazar img por texto. Por que no me anda?

Si va barabaro

gracias!

Etiquetas: img, remplazar
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 06:15.