Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di lnessuno
    Registrato dal
    Feb 2002
    Messaggi
    2,732

    rimpiazzare tag img src= con variabile...

    dunque, sto facendo un sistema di newsletter che va a pescarsi il testo della news da un file html, e fin qua tutto bene, funziona etc (pubblicherò i sorgenti appena avrà raggiunto lo status di "usabile al 90%" )

    il problema che ho adesso è che, nel file html, potrebbero esserci alcune immagini... quindi un tag del tipo

    testo vario bla bla bla
    [img]file://dir/immagineboh.jpg[/img]
    altro testo inutile bla bla

    io vorrei sostituire il tag img un tag tipo

    [img]cid:immagine[x][/img]

    in modo da poterlo far funzionare nel codice dell'email (il percorso reale rimarrebbe scritto al fondo, e gli assegno la variabile immagine[x] dove x è un numero crescente (sarà immagine1 per la prima immagine trovata, immagine2 per la seconda e così via)

    c'è un modo per farlo? le mie conoscenze di php mi dicono che adesso come adesso non sono in grado di farlo io, e anche guardare guide su guide, e il manuale di php, non mi ha aiutato molto...

  2. #2

    Re: rimpiazzare tag img src= con variabile...

    [supersaibal]Originariamente inviato da lnessuno
    dunque, sto facendo un sistema di newsletter che va a pescarsi il testo della news da un file html, e fin qua tutto bene, funziona etc (pubblicherò i sorgenti appena avrà raggiunto lo status di "usabile al 90%" )

    il problema che ho adesso è che, nel file html, potrebbero esserci alcune immagini... quindi un tag del tipo

    testo vario bla bla bla
    [img]file://dir/immagineboh.jpg[/img]
    altro testo inutile bla bla

    io vorrei sostituire il tag img un tag tipo

    [img]cid:immagine[x][/img]

    in modo da poterlo far funzionare nel codice dell'email (il percorso reale rimarrebbe scritto al fondo, e gli assegno la variabile immagine[x] dove x è un numero crescente (sarà immagine1 per la prima immagine trovata, immagine2 per la seconda e così via)

    c'è un modo per farlo? le mie conoscenze di php mi dicono che adesso come adesso non sono in grado di farlo io, e anche guardare guide su guide, e il manuale di php, non mi ha aiutato molto... [/supersaibal]
    espressioni regolari

    www.php.net/pcre
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  3. #3
    Utente di HTML.it L'avatar di lnessuno
    Registrato dal
    Feb 2002
    Messaggi
    2,732
    non ci capisco niente ma in che lingua sono scritte ste espressioni, in russo?

  4. #4
    Utente di HTML.it L'avatar di lnessuno
    Registrato dal
    Feb 2002
    Messaggi
    2,732
    help


    sto provando a smanettare con ste espressioni reglari (e infatti non funziona nulla ), ma ho ancora un problema... io dovrei sostituire i tag come ho detto prima, però i valori sostituiti dovrei salvarli in un array, per poterli andare a ripescare successivamente... come posso fare?

  5. #5
    Utente di HTML.it L'avatar di lnessuno
    Registrato dal
    Feb 2002
    Messaggi
    2,732
    aiutoooo è tutto il giorno che ci sono sopra ma ste espressioni regolari proprio non le capisco

    avete almeno qualche guida comprensibile? quella su php.net è un macello e non ci sono esempi simili a quello che devo fare io...

  6. #6
    [supersaibal]Originariamente inviato da lnessuno
    aiutoooo è tutto il giorno che ci sono sopra ma ste espressioni regolari proprio non le capisco

    avete almeno qualche guida comprensibile? quella su php.net è un macello e non ci sono esempi simili a quello che devo fare io... [/supersaibal]
    ehm ... ma studiale ... le espressioni regolari non è che ti siedi e le capisci all'istante ... se non le provi e non ci fai pratica ... cmq c'è un articolo sulle espressioni regolari su freephp.html.it ... guarda tra gli articoli
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  7. #7
    Utente di HTML.it L'avatar di lnessuno
    Registrato dal
    Feb 2002
    Messaggi
    2,732
    [supersaibal]Originariamente inviato da daniele_dll
    ehm ... ma studiale ... le espressioni regolari non è che ti siedi e le capisci all'istante ... se non le provi e non ci fai pratica ... cmq c'è un articolo sulle espressioni regolari su freephp.html.it ... guarda tra gli articoli [/supersaibal]
    ma fosse un lavoro per me non avrei problemi a studiarle, ci potrei passare anche 3 giorni sopra... il problema è che mi serve per lavoro, domani devo consegnare e oggi sono stato bloccato li tutto il giorno...


    cmq ora ho un codice del genere:

    Codice PHP:
    /* tag html originale per le immagini
    <img alt="" src="file:///home/pcmkt/immagini/img8.jpg" height="500" width="608">
    */

    $cerca '/<img alt="" src="{1,4}" height="{1,4}" width="{1,4}">/i';
    $x 0;
    $testo htmlentities($testo);
    echo 
    $testo "<hr />";

    preg_match ($cerca$testo$immagine);

    if (
    $immagine):
        echo 
    "ho trovato qualcosa";
        foreach (
    $immagine as $elem):
            
    $x $x 1;
            
    $sostituisci '[img]cid:Immagine'.$x.'[/img]';
            
    $testo preg_replace ($elem$sostituisci$testo);
        endforeach;
    endif;

    echo 
    $testo;
    die; 

    però non funziona (ovviamente), ho provato mille combinazioni al posto di quel {1,4}, ma non me lo trova lo stesso...

  8. #8
    per chi fosse ancora in cerca di una soluzione, io ho risolto così:

    Codice PHP:

    // il path della mia cartella immagini
    define(IMG_MAIL_PATH"../Files/mail/img/"); 

    //codice html di esempio
    $BODY "

    testo</p>[img]prova1.jpg[/img]

    altro testo</p><img src=\"prova2.jpg\" alt='prova2' />

    testo</p>"
    //il nostro html di prova

    // TROVIAMO I TAG <img />

    $imgcmd = array();

    //identifica le img nell html 
    $array preg_match_all("/<img[^>]*>/"$BODY$aimgs); 
    foreach(
    $aimgs[0] as $imgs){

         
    //restituisce il nome file completo di src="    
         
    preg_match("/src=['\"][^'\"]*/"$imgs$src); 

        
    //prende soltanto il nome del file (elimina src=")
        
    $nomefile substr($src[0], 5);

         
    //controlla che il file immagine esista, sennò esce dallo script
         
    if(file_exists(IMG_MAIL_PATH.$nomefile)) {

             
    //crea un array del nome del file
             
    $nomefile explode('.',$nomefile); 
             
    $nome $nomefile[0];
             
    $ext $nomefile[1];


             
    //crea la stringa immagine adattata per phpmailer
             
    $sostimg "[img]cid:".$nome."[/img]";


             
    //e la sostituisce con quella presente nel body
             
    $BODY str_replace($imgs$sostimg$BODY);

             
    //aggiunge all'array $imgcmd il nome e l'estensione del file
             
    $imgcmd[] = array($nome$ext);
         } else {
             echo 
    "il file immagine non è stato trovato";
             exit;     
        } 

    a questo punto, non rimane che passare l'HTML a phpmailer per l'invio ($mail->body = $BODY)
    e poi dichiarare l'allegato per ogni immagine presente:

    Codice PHP:
    foreach($imgcmd as $icmd){
    $mail->AddEmbeddedImage(IMG_MAIL_PATH.$icmd[0].'.'.$icmd[1], $icmd[0], $icmd[0].'.'.$icmd[1]);

    E' sicuramente migliorabile, ma intanto funziona.


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.