Eccomi,
ho aggiornato Wik-IT alla versione 1.8 con una funzione che ho chiamato semplicemente Link Automatici.
Dunque, questo è il sisitema che ho adottato io. Non è il migliore, ma è per Wik-IT quello più adatto.
Innanzi tutto, si parte da un file di testo che contiene l'elenco dei comandi, dove ogni comando è una riga composta da:
- parola da convertire in link
- pagina da aprire quando uno clicca sul link
- destinazione, ovvero la pagina stessa (_parent) o in una nuova pagina (_blank).
Queste 3 info devono essere separate dalla pipe |.
Esempio:
moda|http://www.miosito.com/miapagina.htm|_parent
vestito|http://www.armani.it|_blank
**Il Codice
**Innanzi tutto decidiamo che:
- Comandi.txt è il file contenente i vari comandi
- $Testo è la variabile php che contiene il testo del documento da elaborare
Quindi, questo è il codice php:
[php]function AutoLinks($Stringa) {
//Leggo tutti i comandi che ci sono nel file Comandi.txt
$File=fopen("Comandi.txt","r");
while (!feof($File)) {
//In $tmp metto la riga che contiene il comando
$tmp=stripslashes(rtrim(fgets($File,4000)));
//Scompongo il comando nei suoi elementi
$Codici=explode("|",$tmp);
$Parola=$Codici[0];
$Pagina=$Codici[1];
$Target=$Codici[2];
//Adesso che ho le mie informazioni separate le invio a una funzione che sostituisce tutte le parole uguali a $Parola con dei link
$Stringa=Codice_CercaCreaLink($Stringa,$Target,$Pagina,$Parola);
}
fclose($File);
return $Stringa;
}
function Codice_CercaCreaLink($Stringa,$Target,$Pagina,$Parola) {
$Pos=true;
$Da=0;
$Stringa_tmp=strtolower($Stringa); //Crea una copia tutta in minuscolo, perché il comando strpos è sensibile alle Maiuscole e Minuscole. Si potrebbe usare stripos, ma funziona solo con PHP 5. In questo modo, utilizzo $Stringa_tmp per cercare le parole, mentre l'inserimento del codice html lo faccio su $Stringa.
while ($Pos!==false) { //Inizio a scorrere tutto il testo finché non arrivo alla fine
//Cerca la parola
$Pos=strpos($Stringa_tmp, $Parola, $Da); //Cerca la prima parola nella copia di Stringa in minuscolo, partendo da $Da
if ($Pos!==false) { //Ho trovato la parola
//Memorizzo la posizione del carattere dove si trova la parola e la sua lunghezza.
$PrimoCar=$Pos;
$UltimoCar=strlen($Parola);
//1) Memorizzo la parola originale, ovvero la parola così com'è nel testo.
$ParolaOriginale=substr($Stringa, $PrimoCar, $UltimoCar);
//2) Creo il codice html del link
$URL="<a href=\"$Pagina\" target=\"$Target\">$ParolaOriginale</a>";
//3) Nel testo originale sostituisco la parola trovata con il codice html appena generato
$Stringa=substr_replace($Stringa, $URL, $PrimoCar, $UltimoCar);
//Ho quindi sostituito la parola con il codice html che la trasforma in link. Adesso, devo proseguire con la ricerca, ma prima devo "aggiornare" il sisitema di ricerca.
//1) Sposto la ricerca più avanti e lo faccio impostando la posizione da cui iniziare alla posizione rilevata prima + la lunghezza del codice html generato + 1.
$Da=$Pos + strlen($URL) + 1;
//2) Aggiorno $Stringa_tmp con una copia del testo appena modificato tutto convertito in minuscolo.
$Stringa_tmp=strtolower($Stringa);
}
}
return $Stringa;
}
//Supponiamo che il testo da trasformare sia in $Testo.
$Testo=AutoLinks($Testo);
[/php]
Spero sia giusto. Quello usate da me in Wik-IT è diverso da questo, ovviamente.
Ciao
STEVEN