Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di fostex
    Registrato dal
    Mar 2000
    Messaggi
    136

    cambiare i percorsi dentro una stringa di testo

    Ciao,

    vorrei trasformare dentro una stringa di testo estratta dal db tutte le occorrenze di questo tipo:
    testi dei link
    in
    testi dei link

    Immagino ci vogliano le espressioni regolari ma non mi ci raccapezzo per niente

    Idee?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361
    teoricamente se hai solo il tag <a> all'interno del database basta trovare la prima occorrenza del doppio apice ("). questo si può fare con la funzione "strpos" (guarda documentazione php)

    una volta che sai dove si trova il primo apice (che dovrebbe essere quello relativo all'href) sai dove parte l'url della foto. a questo punto devi

    copiare o riscrivere la prima parte del tag, ovvero
    codice:
    <a href="
    quindi, inserire subito dopo la posizione trovata da strpos la nuova path

    codice:
    nuovapath/
    infine, riprendere la seconda parte del tag. questo lo puoi fare grazie a un incrocio tra strpos e substr (che ti restituisce parte della stringa a partire da un punto di partenza, che deve appunto essere quello restituito da strpos)

    alla fine colleghi le 3 stringhe (parte iniziale + nuovapath + parte finale) e hai tutti i collegamenti aggiornati in automatico.

    se oltre al tag <a> ci sono altri tag e dati la soluzione cambia di poco, dato che anzichè dover trovare il primo doppio apice dovrai prima trovare dove si trova il primo <a>,per poi cercare il doppio apice ecc.

    spero di esser stato chiaro.. con uno sguardo alla documentazione php riuscirai a costruire la funzione in un attimo

  3. #3
    Utente di HTML.it L'avatar di fostex
    Registrato dal
    Mar 2000
    Messaggi
    136
    Grazie della sollecita risposta,
    il caso è giustappunto il secondo.

    Provo a vedere se con i tuoi consigli riesco a risolvere.

  4. #4
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Prova a fare cosi... rapido e indolore

    Codice PHP:
    $link "<a href=\"nomi_delle_foto.jpg\" rel=\"lightbox\">testi dei link</a>";
    $link preg_replace('~href="([^"]+)"~''href="nuovo_path/$1"'$link);
    echo 
    $link
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  5. #5
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361
    sicuramente meglio della mia risposta ma adoro i metodi artigianali xD

  6. #6
    Utente di HTML.it L'avatar di fostex
    Registrato dal
    Mar 2000
    Messaggi
    136
    It works like a charm!!
    Sapreste dirmi a spanne se passare un testo di circa 10000 parole attraverso questo controllo consuma in termini di risorse/prestazioni o è trascurabile?

  7. #7
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Un pò consuma... magari fai delle prove e vedi quanto tempo e memoria impiega, cosi ti rendi conto se è accettabile. Ma ora che ci penso... non puoi usare la mia soluzione per cambiare i vari percorsi una volta per tutte aggiornando il database? O a te serve generarli dinamicamente di volta in volta?
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  8. #8
    Utente di HTML.it L'avatar di fostex
    Registrato dal
    Mar 2000
    Messaggi
    136
    Infatti come dici tu sarebbe senz'altro più sensato.
    Ma il problema è che per inserire (e poi eventualmente modificare) le immagini utilizzo un image manager in js (un plugin di tinymce) e doveri mettere le mani li dentro e non so proprio dove!

    Ora provo a tenerlo così.

    Ciao e grazie a tutti

  9. #9
    Utente di HTML.it L'avatar di fostex
    Registrato dal
    Mar 2000
    Messaggi
    136
    Ecco, ovviamente la cosa si complica:

    dovrei fare in modo che questa conversione si verifichi SOLO per i link con le immagini
    cioè .jpg, gif, png ecc..
    se è coplicato potrebbe andare bene anche solo jpg

  10. #10
    Utente di HTML.it L'avatar di fostex
    Registrato dal
    Mar 2000
    Messaggi
    136
    Mi rispondo da solo, se mai a qualcuno servisse:
    Codice PHP:
    $testo preg_replace('~href="([^"]+).(jpg|gif|jpeg|png)"~''href="/nuovo_path/$1.\\2"'$testo); 
    sembrerebbe funzionare ma se vedete cappellate ben vengano correzioni.

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.