Bir önceki posttaki kod işine yarar ancak amacın sadece boşlukları "_" ile değiştirmek ise o fonksiyonu kullanman boş yere kod kalabalığı demektir.

Bunun için replace fonksiyonunu kullanabilirsin

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

$name = str_replace(' ', '_', $name);

İkisi de işini görecektir ancak ilkini kullanmanı öneririm. Ad ve soyad arasında yanlışlıkla veya herhangi başka bir sebeple birden fazla boşluk konması durumunda str_replace fonksiyonu Ad__Soyad gibi bir sonuç verirken, preg_replace fonksiyonu boşluk sayısı farketmeksizin Ad_Soyad şeklinde çıktı verecektir.