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
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
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);
Hai dimenticato di assegnare il risultato di preg_replace
nel vostro $id
$id = preg_replace('/\s+/', '_', $id);
penso str_replace()
potrebbe essere più appropriato qui:
$id = "aa aa";
$id = str_replace(' ', '_', $id);
echo $id;
Questo codice non riproduce ciò che l'OP sta cercando di fare, comunque. –
@VincentSavard: "sostituisci tutti gli spazi con caratteri di sottolineatura" ... Penso che lo faccia :) – Clive
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. –
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;
?>
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