Script php: Sistemare una stringa per url

   difficoltà:  script script script script script

Script simili
14/3/2007


Questa funzione puo' risultare utile nel caso si usi mod_rewrite per riscrivere l'url di una pagina web inglobando in esso una stringa presa da database, che sia il titolo o altro.
La funzione trasforma la stringa passata in una stringa senza spazi o caratteri non standard. Gli spazi saranno sostituiti con underscore, così come i caratteri non standard. Le lettere accentate saranno sostituite con le corrispondenti lettere non accentate.
La stringa:

questa è una 'stringa'
verrà trasformata in:
questa_e_una_stringa
Questa è la funzione:
function SistemaStringa($stringa){
$stringa = trim($stringa);
$stringa = str_replace("à","a",$stringa);
$stringa = str_replace("è","e",$stringa);
$stringa = str_replace("é","e",$stringa);
$stringa = str_replace("ò","o",$stringa);
$stringa = str_replace("ù","u",$stringa);
$stringa = str_replace("ì","i",$stringa);
$stringa = ereg_replace("[^A-Za-z0-9]", "_", $stringa);
$stringa = ereg_replace("_{1,}", "_", $stringa);
if(substr($stringa, 0, 1)=="_"){$stringa=substr($stringa, 1);}
if(substr($stringa, -1, 1)=="_"){$stringa=substr($stringa, 0,strlen($stringa)-1);}
return $stringa;
}
Per prima cosa vengono tolti spazi a inizio e fine stringa, poi vengono sostituiti i principali caratteri accentati con quelli non accentati. Poi tutti i caratteri diversi da numeri o lettere maiuscole o minuscole vengono trasformati in undercore. Infine se ci sono due caratteri underscore vicini vengono sostituiti con uno solo e quelli a inizio e fine vengono eliminati.




Commenti


  Irene

5/6/2007 17:16:56

Ciao, molto utile il tuo script, ma io aggiungerei anche un
$stringa = strtolower($stringa);
per fare tutto il link in minuscolo :) Solo una piccola sciocchezza!

Nenélla

  davide

7/3/2008 14:34:28

una volta ottenuta la nuova stringa senza caratteri strani c'è modo di riconvertirla nella stringa originale?

  Fabio

7/3/2008 14:37:23

No. Se salvi la stringa nel database pero' puoi salvare le due stringhe, quella originale e quella senza caratteri extra

  davide

7/3/2008 14:42:50

oppure usare come in questo sito l'id del record come ultima parola... ;)

  Fabio

7/3/2008 14:47:28

A dire il vero la soluzione migliore sarebbe avere un campo alias nel db. Questo campo è generato in automatico con questo script. Fai un controllo se esiste già un altro record con lo stesso alias. Se esiste fai un ciclo aggiungento ad es _1, _2 finchè il record è univoco. Ora puoi usarlo completamente al posto dell'Id. :-)

  davide

29/4/2008 17:40:32

se volessi usare il "-" al posto del "_" mi basta sostituirli così nella funzione...giusto?

function SistemaStringa($stringa){
$stringa = trim($stringa);
$stringa = str_replace("à","a",$stringa);
$stringa = str_replace("è","e",$stringa);
$stringa = str_replace("é","e",$stringa);
$stringa = str_replace("ò","o",$stringa);
$stringa = str_replace("ù","u",$stringa);
$stringa = str_replace("ì","i",$stringa);
$stringa = ereg_replace("[^A-Za-z0-9]", "-", $stringa);
$stringa = ereg_replace("-{1,}", "-", $stringa);
if(substr($stringa, 0, 1)=="-"){$stringa=substr($stringa, 1);}
if(substr($stringa, -1, 1)=="-"){$stringa=substr($stringa, 0,strlen($stringa)-1);}
return $stringa;
}

  michele

19/7/2009 17:43:21

si puo' mettere una password per alcune pagine con macromedia?




Lascia un commento


Codice di controllo*:
Nome*:
Email/Link:
Testo*:
 
I campi contrassegnati con * sono obbligatori.