Visualizzazione risultati 1 fino 11 di 11

Discussione: [php] Estrarre una sola immagine che abbia un preciso "alt"

  1. #1
    Guest

    Predefinito [php] Estrarre una sola immagine che abbia un preciso "alt"

    Ciao a tutti...

    Ho una pagina con tante immagini e volevo estrarre solo un'immagine che abbia un ALT="" predefinito.

    Quindi ho:
    Codice HTML:
    <img src="images1.jpg" alt="Ciao" />
    <img src="images2.jpg" alt="bye" />
    <img src="images3.jpg" alt="wow" />
    Ad esempio, io vorrei stampare solo l'immagine che abbia alt="bye"...
    Come posso fare?
    Ultima modifica di musicanapoli : 24-04-2012 alle ore 20.26.39

  2. #2
    Guest

    Predefinito

    scusa puoi spiegarti meglio? in che senso vuoi estrarre un'immagine? per di più parliamo di php...non capisco scusa

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,148

    Predefinito

    Se parliamo di js, ad esempio puoi fare:
    Codice:
    var immagini = document.getElementsByTagName("img");	//prelevo tutte le immagini
    for(immagine in immagini)
    {
    	if(immagini[immagine].alt!="wow")  //nascondo tutte le immagini tranne quella con alt "wow"
    		immagini[immagine].style.display="none";
    }
    Però in effetti siamo in php....

    Ciao!
    Ultima modifica di alemoppo : 24-04-2012 alle ore 20.22.21

  4. #4
    Guest

    Predefinito

    in che senso vuoi estrarre un'immagine?
    Ho una pagina con:
    Codice HTML:
    <img src="images1.jpg" alt="Ciao" />
    <img src="images2.jpg" alt="bye" />
    <img src="images3.jpg" alt="wow" />
    Tramite uno script in PHP, vorrei estrapolare e stampare solo l'immagine con alt="bye".

    Però in effetti siamo in php
    Si, mi servirebbe in PHP...

    Il problema non è tanto estrapolare le immagini, ma quanto far stampare solo quella con alt="bye".
    Ultima modifica di musicanapoli : 24-04-2012 alle ore 20.38.22

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,148

    Predefinito

    Ma cosa sono quelle stringhe? Cioè, sono array? È un unica stringa da cui "spezzare" le varie immagini?

    In ogni caso, potrebbe esserti utile str_pos():

    Codice PHP:
    if(str_pos($immagine,'alt="'.$alt.'"') !== FALSE) echo $immagine;
    Ciao!

  6. #6
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Hmm, è un documento XML well-formed? Si potrebbero usare i metodi del DOM, anche se è un po'inutile analizzare un intero documento per estrarre solo un'immagine (devi estrarne una per documento?). Si potrebbe anche fare un'espressione regolare, cosa ti interessa ottenere? L'indirizzo o l'intero tag? L'attributo alt è sempre dopo l'attributo src o ci possono essere delle eccezioni?

  7. #7
    Guest

    Predefinito

    Ma cosa sono quelle stringhe? Cioè, sono array? È un unica stringa da cui "spezzare" le varie immagini?
    È come se avessi una situazione uguale a questa:

    Codice PHP:
    $images = '<img src="image.jpg" class="nomeclasse" alt="frase" title="frase44" width="150" height="150">
    <img src="image1.jpg" class="nomeclasse" alt="fraseA" title="frase150" width="150" height="150">
    <img src="image2.jpg" class="nomeclasse" alt="fraseB" title="fraseD" width="150" height="150">
    <img src="image3.jpg" class="nomeclasse" alt="fraseC" title="fraseCCC" width="150" height="150">'
    ;

    echo
    $images;
    e quindi in HTML ottengo:
    Codice HTML:
    <img src="image.jpg" class="nomeclasse" alt="frase" title="frase44" width="150" height="150">
    <img src="image1.jpg" class="nomeclasse" alt="fraseA" title="frase150" width="150" height="150">
    <img src="image2.jpg" class="nomeclasse" alt="fraseB" title="fraseD" width="150" height="150">
    <img src="image3.jpg" class="nomeclasse" alt="fraseC" title="fraseCCC" width="150" height="150">
    L'attributo alt è sempre dopo l'attributo src o ci possono essere delle eccezioni?
    L'interno del tag img è sempre uguale, i suoi elementi si trovano sempre nella stessa posizione. Quindi in questo caso, prima c'è SRC, poi CLASS e poi ALT...

    Quindi, io dovrei far si che la variabile $images mi stampi solo il tag <img> avente un ALT="" che dico io...

    cosa ti interessa ottenere? L'indirizzo o l'intero tag?
    Possibilmente l'intero tag.
    Ultima modifica di musicanapoli : 25-04-2012 alle ore 02.21.14

  8. #8
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Qualcosa come:
    Codice PHP:
    preg_match('/<img [^>]*alt=([\'"])'.preg_quote($alt_value, '/').'\\1[^>]*/', $HTML, $matches)
    Però potrebbe sbagliare: per esempio il tag
    Codice:
    <img src="mio%20URL?parametro=valore&alt='valore'" alt="valore2" />
    viene identificato per due distinti valori.

  9. #9
    Guest

    Predefinito

    EDIT

    Ho provato così e funziona:

    Codice PHP:
    if(preg_match('/<img [^>]*alt=([\'"])'.preg_quote($alt_value, '/').'\\1[^>]*/', $HTML, $matches)) {


    echo
    $matches[0].'/>';
    }
    Se scrivo solo $matches[0] mi stampa <img src"immagine.jpg" alt="parola che cerco" (senza la chiusura del tag), per cui ho scritto così: $matches[0].'/>'

    Forse bisogna scrivere in qualche modo la chiusura del tag dentro il preg_match?
    Ultima modifica di musicanapoli : 25-04-2012 alle ore 15.04.52

  10. #10
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Ops... Ho dimenticato un pezzo di espressione regolare, preponi un simbolo di maggiore alla barra finale:
    Codice PHP:
    preg_match('/<img [^>]*alt=([\'"])'.preg_quote($alt_value, '/').'\\1[^>]*>/', $HTML, $matches)

  11. #11
    Guest

    Predefinito

    Ok ti ringrazio...

    Comunque se a qualcuno servisse: nel caso in cui la variabile estraesse le immagini tramite un array, prima di fare questa operazione, bisogna fare l'implode della variabile.

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •