Zastępowanie spacji podkreśleniami


136

Mam skrypt PHP, który użytkownicy będą wprowadź nazwę jak: Alex_Newton,

Jednak niektórzy użytkownicy będą używać spacji zamiast podkreślenia, więc moje pytanie brzmi:

Jak automatycznie zamienić spacje na podkreślenia w PHP?

Odpowiedzi:



70

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);

11
Jest to lepsze rozwiązanie w tym sensie, że zastępuje wiele spacji pojedynczym podkreśleniem, co jest zwykle pożądanym wynikiem.
mroźny cud

5
Również karty i cokolwiek
Loupax





7

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);

Jest to interesujące, ponieważ spacje na początku / końcu linii nie zostaną zastąpione przez _, ale zamiast tego zostaną usunięte. Jednak pamiętaj, że może / usunie również inne znaki z początku / końca ciągu jako (\ r i \ n lub tabulatory).
Paul,

1

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);

1

Używałem w ten sposób

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

0

możesz użyć str_replace powiedz, że twoje imię jest w zmiennej$name

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

innym sposobem jest użycie wyrażenia regularnego, ponieważ pomoże to wyeliminować przestrzeń 2-czasową itp.

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

0

Strtrzastępuje pojedyncze znaki zamiast ciągów, więc jest to dobre rozwiązanie dla tego przykładu. Podobno strtrjest szybszy niż str_replace(ale w tym przypadku oba są niezmiernie szybkie).

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

Fajnie, gdyby ktoś zamienił spacje na „_” w wielu długich plikach (logach?), To mogłoby to być mierzalnie szybsze? (Chociaż nie ma dowodu / odniesienia, może to być interesująca odpowiedź dla każdego, kto jest zainteresowany szybkością wykonania).
Paul,

Hej Paul, tak mi się wydaje. Wypróbuj i porównaj.
Thoracius Appotite

0

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)


O co chodzi '/\s+/'?
FlameStorm
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.