Foros del Web » Programando para Internet » PHP »

ayuda: cambiar datos en una cadena de texto.

Estas en el tema de ayuda: cambiar datos en una cadena de texto. en el foro de PHP en Foros del Web. Hola amigo, tengo una percance, como puedo obtener la el path de una imagen, luego para ver si existe la imagen a remplazar, si existe ...
  #1 (permalink)  
Antiguo 27/02/2009, 01:11
Avatar de Calichin  
Fecha de Ingreso: febrero-2009
Mensajes: 8
Antigüedad: 15 años, 2 meses
Puntos: 0
ayuda: cambiar datos en una cadena de texto.

Hola amigo, tengo una percance, como puedo obtener la el path de una imagen, luego para ver si existe la imagen a remplazar, si existe la cambio y si no existe la dejo.
una cadena como esta:
$cadena = 'algo.. <img src="imges/bonito.jpg" alt="bonito"> nuestra imagen¡’;

la condición seria, si: imges/bonito+_grander + .jpg existe remplazamos, de los contrario dejarla.

con esto la puedo remplazar directo
Código PHP:
$cadena preg_replace('/<img(.*?)scr=(.*?).(jpg|gif)"(.*?)>/i''<img $1scr=$2.$3" $4 >'$cadena); 
BUeno espero su ayuda :D gracias.
  #2 (permalink)  
Antiguo 27/02/2009, 08:26
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: ayuda: cambiar datos en una cadena de texto.

Tienes que usar preg_replace, puedes usar el mismo patron que estas usando ahora mismo.
  #3 (permalink)  
Antiguo 27/02/2009, 09:46
Avatar de Sommy  
Fecha de Ingreso: septiembre-2008
Mensajes: 228
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: ayuda: cambiar datos en una cadena de texto.

Perdon, pero que lime! y que uso de recursos innecesarios... Ponele a la foto un nombre random y es imposible que sean iguales, ahorrate todo esto...

Las expresiones regulares son para situaciones muuuy especiales... No hay que abusar de ellas.

Te paso una funcion mia que uso para exactamente eso, genera una cadena random, y se le pone al archivo ese nombre.

Código PHP:
function randomChain($intChainLength) {
    
##ARRAY DE NUEROS, MAYUSCULAS Y MINUSCULAS (EN ESTE CASO USO ALFANUMERICO), ~
    ##SIMPLEMENTE ELIMINAR UN ITEM DEL ARRAY PARA CONVERTIR EN SOLO TEXTO, SOLO NUMERO
    
$arrChr[0] = 97;
    
$arrChr[1] = 65;
    
$arrChr[2] = 48;

    
$intArrLength count($arrChr);

    for(
$i=0$i<$intChainLength; ++$i) {

    
$intRndChr $arrChr[mt_rand(0$intArrLength-1)];
        
        
$intRndPlus mt_rand(025);
        if(
$intArrLength == 3) {
            
$intRndPlus mt_rand(09);
        }

        
$strCadena .= chr($intRndChr+$intRndPlus);
    }

    return 
$strCadena;

$intChainLength es el numero de caracteres que queres ponerle a la foto, con 10 esta bien, las probabilidades de que se repita son infinitas, porque hay mayusculas tambien ;)

Se invocaria asi:

Código PHP:
$strNombreFoto =  randomChain(10); 
Simple no? Ahorrate dolores de cabeza,

adeus!
  #4 (permalink)  
Antiguo 27/02/2009, 21:31
Avatar de Calichin  
Fecha de Ingreso: febrero-2009
Mensajes: 8
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: ayuda: cambiar datos en una cadena de texto.

Gracias amigos por la respuesta, pero se salio del tema.

Lo que busco exactamente es esto:
Tengo una tabla db, en ella contiene etiquetas de <img > subidas al servidor y imágenes linkeadas de otro sitio, cuando hago la consulta, me muestra todo, lo que quiero hacer es:

Las imágenes que estén en mi sitio, que muestre solo el Thumbnail (la pequeña imagen), que genere al subirla, y si no encuentra la Thumbnail, que muestre la etiqueta sin cambios:

Ejemplo: las imágenes que subí, esta con su nombre fotos/imagen01.jpg y el Thumbnail; fotos/Thumb_imagen01.jpg

$cadena “Imagen <img scrruta ahcer cambis”” >”


El que mostré anterior con preg_replace la reemplaza, pero a toda la etiquetas, los links de <img > de otro server ya no muestra el path real.

Espero aclara mas mis expectativas. De antemano gracias.
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 05:38.