2011-11-17 17 views
18

che sto cercando di sostituire tutti gli spazi con sottolineature e il seguente non funziona:preg_replace tutti gli spazi

$id = "aa aa"; 
echo $id; 
preg_replace('/\s+/', '_', $id); 
echo $id; 

stampe

aa aaaa aa 

risposta

54

La funzione preg_replace non modifica fy la stringa sul posto. Restituisce una nuova stringa con il risultato della sostituzione. Si dovrebbe assegnare il risultato della chiamata al $id variabile:

$id = preg_replace('/\s+/', '_', $id); 
+1

Si noti che se la pagina è codificato con UTF-8, allora è necessario aggiungere il modificatore unicode alla fine dell'espressione regolare, in modo che diventi preg_replace ('/ \ s +/u ',' _ ', $ id); La mancata aggiunta di questo potrebbe causare caratteri non validi nel testo codificato UTF-8. Vedi: https://stackoverflow.com/q/43849130/649497 – BruceHill

11

Hai dimenticato di assegnare il risultato di preg_replace nel vostro $id

$id = preg_replace('/\s+/', '_', $id); 
13

penso str_replace() potrebbe essere più appropriato qui:

$id = "aa aa"; 
$id = str_replace(' ', '_', $id); 
echo $id; 
+0

Questo codice non riproduce ciò che l'OP sta cercando di fare, comunque. –

+3

@VincentSavard: "sostituisci tutti gli spazi con caratteri di sottolineatura" ... Penso che lo faccia :) – Clive

+0

La sua frase lascia spazio all'interpretazione, ma il suo codice no. Il tuo codice sostituirà ogni singolo spazio con un carattere di sottolineatura, mentre a quanto pare vuole sostituire ogni gruppo di caratteri di spaziatura in un singolo carattere di sottolineatura. –

2

abbiamo bisogno di sostituire lo spazio nella stringa "aa aa" con '_' (trattino basso). Il \ s + è usato per abbinare più spazi. L'uscita sarà "aa_aa"

<?php 

$id = "aa aa"; 
$new_id = preg_replace('/\s+/', '_', $id); 
echo $new_id; 

?> 
+0

Puoi fornire una spiegazione di come funziona questo codice? – LThode

+0

Abbiamo bisogno di sostituire lo spazio nella stringa "aa aa" con "_" (trattino basso). \ s + è utilizzato per abbinare più spazi. L'output sarà "aa_aa" – Suja

+0

edita nella tua risposta per favore – LThode

Problemi correlati