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
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
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
quindi, inserire subito dopo la posizione trovata da strpos la nuova pathcodice:<a href="
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)codice:nuovapath/
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![]()
Grazie della sollecita risposta,
il caso è giustappunto il secondo.
Provo a vedere se con i tuoi consigli riesco a risolvere.
![]()
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è
sicuramente meglio della mia rispostama adoro i metodi artigianali xD
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?
![]()
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è
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
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
![]()
Mi rispondo da solo, se mai a qualcuno servisse:
sembrerebbe funzionare ma se vedete cappellate ben vengano correzioni.Codice PHP:
$testo = preg_replace('~href="([^"]+).(jpg|gif|jpeg|png)"~', 'href="/nuovo_path/$1.\\2"', $testo);
![]()