Antworten:
$name = str_replace(' ', '_', $name);
Wie andere bereits erklärt haben str_replace, können Sie auch Regex verwenden, um dies zu erreichen.
$name = preg_replace('/\s+/', '_', $name);
$name = str_replace(' ', '_', $name);
Rufen Sie http://php.net/str_replace an :$input = str_replace(' ', '_', $input);
Verwenden Sie str_replace :
str_replace(" ","_","Alex Newton");
Sie können dies auch tun, um zu verhindern, dass die Wörter mit Unterstrichen wie _words_more_words_ beginnen oder enden. Dadurch wird vermieden, dass Leerzeichen beginnen und enden.
$trimmed = trim($string); // Trims both ends
$convert = str_replace('', '_', $trimmed);
Dies ist Teil meines Codes, der Leerzeichen zu Unterstrichen für die Benennung meiner Dateien macht:
$file = basename($_FILES['upload']['name']);
$file = str_replace(' ','_',$file);
StrtrErsetzt einzelne Zeichen anstelle von Zeichenfolgen, daher ist dies eine gute Lösung für dieses Beispiel. Angeblich strtrist schneller als str_replace(aber für diesen Anwendungsfall sind beide unermesslich schnell).
echo strtr('Alex Newton',' ','_');
//outputs: Alex_Newton
str_replace- Es ist eine offensichtliche Lösung. Aber manchmal muss man genau wissen, welche Räume es gibt. Ich habe ein Problem mit Leerzeichen aus der CSV-Datei.
Es gab zwei Zeichen, aber eines davon war 0160 (0x0A0) und das andere war unsichtbar (0x0C2)
meine endgültige Lösung:
$str = preg_replace('/\xC2\xA0+/', '', $str);
Ich habe das unsichtbare Symbol vom HEX-Viewer von mc gefunden (Mitternachts-Viewer - F3 - F9)
'/\s+/'?