Odpowiedzi:
$name = str_replace(' ', '_', $name);
Jak inni wyjaśnili, jak to zrobić za pomocą str_replace
, możesz również użyć wyrażenia regularnego, aby to osiągnąć.
$name = preg_replace('/\s+/', '_', $name);
$name = str_replace(' ', '_', $name);
Zadzwoń na http://php.net/str_replace :$input = str_replace(' ', '_', $input);
Użyj str_replace :
str_replace(" ","_","Alex Newton");
Możesz również to zrobić, aby zapobiec rozpoczynaniu lub kończeniu słów podkreśleniami, takimi jak _words_more_words_. Pozwoli to uniknąć rozpoczynania i kończenia spacjami.
$trimmed = trim($string); // Trims both ends
$convert = str_replace('', '_', $trimmed);
To jest część mojego kodu, która zamienia spacje w podkreślenia w celu nazwania moich plików:
$file = basename($_FILES['upload']['name']);
$file = str_replace(' ','_',$file);
Strtr
zastępuje pojedyncze znaki zamiast ciągów, więc jest to dobre rozwiązanie dla tego przykładu. Podobno strtr
jest szybszy niż str_replace
(ale w tym przypadku oba są niezmiernie szybkie).
echo strtr('Alex Newton',' ','_');
//outputs: Alex_Newton
str_replace
- to oczywiste rozwiązanie. Ale czasami musisz wiedzieć, jakie dokładnie są miejsca. Mam problem ze spacjami z pliku csv.
Były dwa znaki, ale jeden z nich to 0160 (0x0A0), a drugi był niewidoczny (0x0C2)
moje ostateczne rozwiązanie:
$str = preg_replace('/\xC2\xA0+/', '', $str);
Znalazłem niewidoczny symbol z przeglądarki HEX z mc (przeglądarka północy - F3 - F9)
'/\s+/'
?