У меня есть PHP скрипт , который пользователи будут вводить имя как: Alex_Newton
,
Однако некоторые пользователи будут использовать пробел, а не подчеркивание, поэтому мой вопрос:
Как в PHP автоматически заменить пробелы на символы подчеркивания?
Ответы:
$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 viewer от mc (полночный просмотрщик - F3 - F9)
'/\s+/'
?