• User Attivo

    Problema strano con str_replace

    Ciao a tutti,
    mi si sta presentando uno strano problema con str_replace, ovvero:
    nel database ho, ad esempio, del testo con un'immagine che ha questo percorso: <img src = "images /stories /mia-foto . jpg">
    Con str_replace voglio modificare il percorso relativo in uno assoluto, altrimenti poi, quando vado a caricare quel testo in una pagina ben precisa, l'immagine non si vede; quindi procedo con:

    $MioContenuto = str_replace('src="images', 'src="http :// www . miosito .it/ gestione / images', $MioContenuto);

    (ovviamenti gli spazi sono per evitare che la stringa sia vista come link!)
    Il fatto strano è che inizialmente funziona e le immagini si vedono.
    Dopo un pò non funziona più e sembra che il php non riesca più a fare la sostituzione.
    In alcune pagine su qualche immagine funziona e su altre no... Eppure è l'identito codice!
    E' una cosa che ho sempre utilizzato e ha sempre funzionato, ma adesso invece fa i capricci. Può dipendere forse da qualche impostazione del Server? (sono su Register)
    Un esempio di pagina è questo:
    http :// www . see-tech .it/ demo/ FOGNATURA/ spurgo-fognature-e-scarichi-domestici.php

    La bandiera inglese nel testo centrale si vede; le due immaginine a fianco no.. Eppure è lo stesso medesimo codice...!!

    Grazie,
    cordiali saluti


  • Consiglio Direttivo

    Ciao delizard,
    hai provato a visualizzare il contenuto di $MioContenuto?
    Nel caso non fermati a vedere solo quello che ti da a video ma guarda il sorgente pagina. 😉

    Facci sapere. 🙂

    :ciauz:


  • User Attivo

    Ciao Samyorn,
    grazie dell'attenzione.
    Certo si, il contenuto l'ho controllato; ho controllato anche dentro il campo del database. Tutto giusto.
    La cosa strana è che appena ho messo online quelle pagine le immagini si vedevano, il giorno dopo no.. è questa la cosa veramente strana che non riesco a comprendere...

    Se qualunque cosa può aiutarvi a capire chiedete pure! 🙂

    Grazie,
    ciao!


  • Consiglio Direttivo

    Banalmente, andando a vedere il sorgente, il percorso non punta ad un file utile, controlla il percorso e/o il nome del file immagine. 😉


  • User Attivo

    Ciao,
    il sorgente non punta al file proprio perchè il php non agisce... Non funzionando lo "str_replace" viene lasciato il percorso che esce dal database e dunque sbagliato! E' proprio lì il problema.
    Io devo intervenire con lo "str_replace" sul percorso dell'immagine per modificarlo in modo che punti al file correttamente..

    Mi sono spiegato bene oppure oramai, essendo dentro al problema non riesco a comunicarvelo in modo corretto?
    Ditemi se è così cercherò di fare del mio meglio 🙂

    Grazie e ciao!


  • Consiglio Direttivo

    Sicuro che sul Db non venga salvato come src="images ?


  • User Attivo

    Ciao,
    ti allego immagine che riproduce i campi del db con evidenziato il punto dell'immagine.

    E poi immagino che se il db salvasse con lo slash allora non dovrebbe funzionare neanche la visualizzazione dell'immagine nell'articolo centrale, e invece lì l'immagine si vede... E il codice php è identico.

    Non riesco veramente ad uscirci! 😞

    ciao e grazie!

    PS: l'immagine non me la fa allegare, ti scrivo qua sotto l'indirizzo:
    http : // www . millestanze . it / campo-db . jpg


  • Consiglio Direttivo

    Hai provato a scrivere su un file di testo il contenuto di $MioContenuto prima dello str_replace?
    Vedi se magari esce fuori qualcosa.

    P.S. A parte il problema, ti consiglierei vivamente di non permettere il salvataggio di tag, apici e virgolette sul Db, sei a fortissimo rischio di Injection, 😉


  • User

    Ciao, posso provare a suggerirti di usare una sostituzione con regular expression per tagliare la testa al toro e vedere se funziona ?

    [PHP]$MioContenuto = preg_replace("#src[ ]?=[ ]?"[ /]*?images#is", "src="http .. miosito ../gestione/images", $MioContenuto);[/PHP]

    Ho specificato un pattern di ricerca più elastico, nel qual caso vi sia qualche spazio o altro che sballa il matching dello str_replace, ricorda di sostituire l'url giusta dove ho scritto "http .. miosito .." 😉

    Fammi sapere come va 🙂


  • User Attivo

    edit


  • User Attivo

    :bravo: mi inchino Black 🙂

    Pare funzionare perfettamente... Sono in debito :wink3:

    Grazie infinite a tutti per il supporto!
    ciao!