2010-04-13 9 views
18

Come sostituire spazi e trattini quando compaiono insieme con solo trattino in PHP?Sostituisci tutti gli spazi e simboli speciali con dash in URL utilizzando il linguaggio PHP

per esempio qui sotto è il mio URL

http://kjd.case.150/1 BHK+Balcony- 700+ sqft. spacious apartmetn Bandra Wes 

In questo voglio sostituire tutti i caratteri speciali con il precipitare in PHP. Nell'URL c'è già un trattino dopo "balcone". Se sostituisco il trattino con un carattere speciale, diventa due trattini perché c'è già un trattino nell'URL e voglio solo 1 trattino.

+0

Quali sono il carattere speciale? – codaddict

+0

Cosa vuoi che il tuo url diventi? 'Http: // kjd.case.150/1-BHK-Balcone-700-piedi quadrati-grande ristora-apartmetn-Bandra-West'? – Eric

risposta

2

Se il trattino può contenere un massimo di uno spazio, è possibile utilizzare la risposta tramite John. Se ci potrebbe essere più di uno spazio che si può provare a utilizzare preg_replace:

$str = preg_replace('/\s*-\s*/','-',$str); 

Questo sostituirebbe anche un - non circondata da spazi con - !!

per renderlo un po 'più efficiente che si potrebbe fare:

$str = preg_replace('/\s+-\s*|\s*-\s+/','-',$str); 

Ora Ciò garantirebbe un - ha almeno uno spazio che lo circonda, mentre il suo essere sostituito.

38

Direi che potresti volerlo in un altro modo. Non "spazi" ma ogni carattere non alfanumerico. Perché ci possono essere altri personaggi, non consentiti nella URL (segno +, per esempio, che viene utilizzato in sostituzione spazio)

Così, per fare un URL valido da un testo in formato libero

$url = preg_replace("![^a-z0-9]+!i", "-", $url); 
+0

Non dovrebbero quelli essere barre in avanti, piuttosto che punti esclamativi? – Eric

+4

Devi prima rimuovere il nome del dominio, altrimenti perderai i tuoi punti. – Eric

+0

funzionamento perfetto ... Grazie – Chaitenya

2

questo dovrebbe farlo per voi

strtolower(str_replace(array(' ', ' '), '-', preg_replace('/[^a-zA-Z0-9 s]/', '', trim($string)))); 
1

applicare questa espressione regolare /[^a-zA-Z0-9]/, '-' che andrà a sostituire tutti i caratteri non alfanumerici con -. Memorizzalo in una variabile e applica nuovamente questa espressione regolare /\-$/, '' che sfuggirà all'ultimo carattere.

0

suo vecchio battistrada ma per aiutare qualcuno, utilizzare questa funzione:

function urlSafeString($str) 
{ 
    $str = eregi_replace("[^a-z0-9\040]","",str_replace("-"," ",$str)); 
    $str = eregi_replace("[\040]+","-",trim($str)); 
    return $str; 
} 

verrà restituito un URL stringa sicura

+0

Eregi replace è deprecato http://php.net/manual/fr/function.eregi-replace.php –

Problemi correlati