Leerzeichen durch Unterstriche ersetzen


136

Ich habe einen PHP - Skript , dass die Nutzer wie einen Namen eingeben werden: Alex_Newton,

Einige Benutzer verwenden jedoch eher ein Leerzeichen als einen Unterstrich. Meine Frage lautet daher:

Wie ersetze ich Leerzeichen in PHP automatisch durch Unterstriche?

Antworten:



70

Wie andere bereits erklärt haben str_replace, können Sie auch Regex verwenden, um dies zu erreichen.

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

11
Dies ist eine bessere Lösung in dem Sinne, dass mehrere Leerzeichen durch einen einzigen Unterstrich ersetzt werden, was normalerweise die gewünschte Ausgabe ist.
— frostymarvelous

5
Auch Tabs und was auch immer
— Loupax





7

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 interessant, da Leerzeichen am Anfang / Ende der Zeile nicht durch _ ersetzt, sondern entfernt werden. Beachten Sie jedoch, dass möglicherweise auch andere Zeichen vom Anfang / Ende der Zeichenfolge als (\ r und \ n oder Tabulatoren) entfernt werden.
— Paul

1

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

1

Ich habe so benutzt

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

0

Sie können str_replace sagen, Ihr Name ist in Variable$name

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

Eine andere Möglichkeit ist die Verwendung von Regex, da dies dazu beiträgt, 2-maligen Speicherplatz usw. zu eliminieren.

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

0

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

Cool, wenn man Leerzeichen in mehreren, langen Dateien (Protokollen?) In "_" konvertieren würde, könnte dies messbar schneller sein? (Obwohl es keinen Beweis / Hinweis gibt, kann dies eine interessante Antwort für alle sein, die an der Ausführungsgeschwindigkeit interessiert sind).
— Paul

Hey Paul, ich würde es mir denken. Probieren Sie es aus und messen Sie es.
— Thoracius Appotite

0

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)


Was ist mit '/\s+/'?
— FlameStorm
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.