Заменяя пробелы символом подчеркивания


У меня есть php-скрипт, который пользователи будут вводить имя типа: Alex_Newton,

однако некоторые пользователи будут использовать пробел, а не подчеркивание, поэтому мой вопрос:

Как я могу автоматически заменить пробелы подчеркиванием в PHP?

11 117
php

11 ответов:

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

Как и другие объяснили, как это сделать с помощью str_replace, вы также можете использовать regex для достижения этой цели.

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

http://php.net/manual/en/function.str-replace.php

использовать как str_replace функция PHP.

что-то типа:

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

вызов 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);

Я такой

$option = trim($option);
$option = str_replace(' ', '_', $option);

Strtr заменяет отдельные символы вместо строк, так что это хорошее решение для этого примера. Якобы strtr быстрее str_replace (но для этого случая использования они оба неизмеримо быстры).

echo strtr('Alex Newton',' ','_');
//outputs: Alex_Newton

можно использовать str_replace скажите, что ваше имя находится в переменной $name

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

другой способ-использовать регулярное выражение, так как это поможет устранить 2-временное пространство и т. д.

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