Відповіді:
$name = str_replace(' ', '_', $name);
Як і інші пояснили, як це зробити за допомогою str_replace, ви також можете використовувати регулярний вираз для досягнення цього.
$name = preg_replace('/\s+/', '_', $name);
$name = str_replace(' ', '_', $name);
Телефонуйте http://php.net/str_replace :$input = str_replace(' ', '_', $input);
Використовуйте str_replace :
str_replace(" ","_","Alex Newton");
Ви також можете зробити це, щоб слова не починалися чи не закінчувались підкресленнями, такими як _words_more_words_. Це дозволить уникнути початку та закінчення пробілів.
$trimmed = trim($string); // Trims both ends
$convert = str_replace('', '_', $trimmed);
Це частина мого коду, яка робить пробіли підкресленнями для іменування моїх файлів:
$file = basename($_FILES['upload']['name']);
$file = str_replace(' ','_',$file);
Strtrзамінює окремі символи замість рядків, тому це хороше рішення для цього прикладу. Імовірно, strtrце швидше, ніж str_replace(але для цього випадку використання вони неодмінно швидкі).
echo strtr('Alex Newton',' ','_');
//outputs: Alex_Newton
str_replace- це очевидне рішення. Але іноді потрібно знати, які саме місця є. У мене проблема з пробілами з CSV-файлу.
Було дві символи, але одна - 0160 (0x0A0), а інша - невидима (0x0C2)
моє остаточне рішення:
$str = preg_replace('/\xC2\xA0+/', '', $str);
Я знайшов невидимий символ у HEX глядача від mc (переглядач опівночі - F3 - F9)
'/\s+/'?