Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376

    Accedere a immagine in array

    Ho questo codice (non badate alla sintassi: ho tolto tutto per semplificare la lettura) che fa il parse di alcuni bbCode:

    $trova = array(
    '{[i mg]regexp[/i mg]}'
    );
    $sostituisci = array(
    '[img]\\2[/img]'
    );
    $output = preg_replace($trova, $sostituisci, $output);


    Ho bisogno di accedere al percorso dell'immagine trovata (rappresentata da \\2) per usare getimagesize()
    Ho provato con getimagesize(\\2) ma non funziona.
    Come posso ottenere i dati (size, dimensione ecc.) dell'immagine?

  2. #2
    Ciao LucianoS,

    prova cosi

    list($width, $height, $type, $attr) = getimagesize($_FILES["$nome"]["tmp_name"]);

    e poi ti richiami i campi che ti occorrono.
    Fammi sapere
    www.clickeweb.com Realizzazione siti web

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376
    io non conosco il nome dell'immagine: so solo che è rappresentata dal match della regexp e cioè \\2, cioè mi basta qualunque immagine venga trovata.
    Una volta ottenuto il suo path completo (http://sito.xx/immagine.jpg), posso usare getimagesize() per poi fare altre cose dopo con le sue dimensioni, size ecc.

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    scrivi una funzione che prenda in input il nome trovato, faccia quello che ti serve con getimagesize, e restituisca il replacement

    poi nel preg usa il modifier /e e passagli la funzione come codice da valutare.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376
    non ho capito: puoi farmi un esempio pratico?

  6. #6
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    function blah($d){
    //getimagesize($d) etc etc
    return "<img src=\"$d\" />"; //o quello che vuoi
    }


    $trova = array(
    '/(tuopattern)/e'
    );
    $sostituisci = "blah('\\1')";

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376
    ho provato così:

    function codice(){

    function blah($d){
    return getimagesize($d);
    }

    $trova = array(
    '{[i mg]regexp[/i mg]}'
    );
    $sostituisci = array(
    '' . blah("\\2") . ''
    );
    $output = preg_replace($trova, $sostituisci, $output);
    }
    [/code]

    ma continua a darmi: "Warning: getimagesize(\2): failed to open stream"

  8. #8
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    intanto quel codice e' un macello, che ci fa la funzione dentro la funzione?

    e poi non devi fare

    $sostituisci = array(
    '' . blah("\\2") . ''
    );

    ma

    $sostituisci = array(
    ''blah('\\2')''
    );

    edit: e la tua funzione non deve restituire getimagesize, deve restituire quello con cui vuoi che vengano sostituiti i match!

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376
    ci sono quasi: nell'array "sostituisci" ho fatto come mi hai suggerito ed ho messo la funzione "blah" fuori dalla mia che avevo.
    Diciamo che se volessi mostrare accanto all'immagine anche le sue dimensioni? ho provato così

    function blah($d){
    list($width, $height) = getimagesize("$d");
    return $d . "<img src=$d />";
    }

    ma mostra solo il percorso dell'immagine e lìimmagine stessa.

  10. #10
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    beh, se tu prendi le variabili width height e le vuoi mostrare, allora devi aggiungere quelle nel risultato, e non due volte $d..

    qualcosa del genere:

    return $width ."x".$height . " <img src=$d />";

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.