Wie entferne ich Leerzeichen vor und nach einer Zeichenfolge?

Lesezeit: 2 Minuten

Benutzer-Avatar
Tarek

Ich habe natürlich zwei Wörter, die durch Leerzeichen geprägt sind, und viele Leerzeichen davor und danach. Was ich tun muss, ist, die Leerzeichen davor und danach ohne die Zwischenräume einmal zu entfernen.

Wie kann ich die Leerzeichen davor und danach entfernen?

Dafür brauchen Sie keinen regulären Ausdruck, verwenden Sie trimmen():

$words="      my words     ";
$words = trim($words);
var_dump($words);
// string(8) "my words"

Diese Funktion gibt einen String zurück, bei dem am Anfang und am Ende von str Leerzeichen entfernt wurden.

  • Wieso hat das bei mir nicht funktioniert? Ich sehe immer noch meine Leerzeichen nach den Zeichenfolgen. Irgendwelche Hinweise? Jeder ?

    – Code-8

    24. Februar 2016 um 13:57 Uhr

  • Vielleicht sind sie nicht wirklich Leerzeichen. Ich bin auf dieses Problem mit Texten aus Office Word gestoßen.

    – Mihai Iorga

    5. März 2016 um 6:43 Uhr

Benutzer-Avatar
Kai

Der Vollständigkeit halber (da diese Frage getaggt ist regex), hier ist ein trim() Neuimplementierung in Regex:

function preg_trim($subject) {
    $regex = "/\s*(\.*)\s*/s";
    if (preg_match ($regex, $subject, $matches)) {
        $subject = $matches[1];
    }
    return $subject;
}
$words="      my words     ";
$words = preg_trim($words);
var_dump($words);
// string(8) "my words"

  • Ich musste ein einfaches Leerzeichen am Anfang und am Ende einer Zeichenfolge kürzen (ich habe irgendwie die am häufigsten gewählte Antwort hier übersprungen, um die in PHP integrierte Trim-Funktion zu verwenden). Davor habe ich Ihre Funktion verwendet. Es gab eine leere Zeichenfolge zurück. Diese Funktion funktioniert nur, wenn am Anfang und am Ende einer Zeichenfolge mehr als ein Leerzeichen steht. Keine schlechte Idee, eine Funktion wie diese zu haben, die alle Leerzeichen entfernt, aber es muss auch mit nur einem Leerzeichen funktionieren.

    – Eduard B.

    10. Dezember 2020 um 15:44 Uhr

Benutzer-Avatar
Aleksandar Lasovic

Aus irgendeinem Grund haben die beiden oben genannten Lösungen bei mir nicht funktioniert, also habe ich mir diese Lösung ausgedacht.

function cleanSpaces($string) {
    while(substr($string, 0,1)==" ") 
    {
        $string = substr($string, 1);
        cleanSpaces($string);
    }
    while(substr($string, -1)==" ")
    {
        $string = substr($string, 0, -1);
        cleanSpaces($string);
    }
    return $string;
}

  • Beachten Sie, dass dies zwar funktionieren kann, der Overhead für die Rekursion dies jedoch extrem langsam und ineffizient macht. Ich bin mir nicht sicher, warum das Trimmen bei Ihnen nicht funktioniert hat, da es bei jeder Saite gut funktionieren sollte.

    – Kevin Finkenbinder

    19. November 2015 um 21:39 Uhr

Benutzer-Avatar
Rick

Die Frage war, wie man es mit Regex macht, also:

$str1=~ s/^\s+|\s+$//g; 

Das sagt ^ am Anfang \s+ (Leerraum) | oder \s+$ (Leerzeichen am Ende) //g immer wieder entfernen. dasselbe Konzept funktioniert in ‘ed’ (vi/vim)

Manchmal ist es besser, nur die gestellte Frage zu beantworten.

Wenn das Trimmen auch bei Ihnen nicht funktioniert, versuchen Sie dies. Sie müssen es nur in eine andere Variable schreiben;

$str=" hello world ";
echo strlen($str);

$trim_str = trim($str);
echo strlen($trim_str);

1204560cookie-checkWie entferne ich Leerzeichen vor und nach einer Zeichenfolge?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy