Entfernen Sie überschüssige Leerzeichen aus einer Zeichenfolge

Lesezeit: 4 Minuten

Entfernen Sie uberschussige Leerzeichen aus einer Zeichenfolge
joepour

Ich erhalte eine Zeichenfolge von einer Datenbankabfrage, dann entferne ich alle HTML-Tags, Wagenrückläufe und Zeilenumbrüche, bevor ich sie in eine CSV-Datei füge. Das einzige ist, dass ich keine Möglichkeit finde, die zu entfernen Überschuss Leerraum aus zwischen die Saiten.

Was wäre der beste Weg, um die inneren Leerzeichen zu entfernen?

  • Bitte posten Sie ein Muster des Original-Strings und des gewünschten Strings.

    – Zote

    9. November 2009 um 19:53 Uhr

  • Können Sie auch klären, wie die endgültige Ausgabe sein muss? Fügen Sie die Kommas in Daten für CSV ein, holen Sie sie aus einer Datenbank mit bereits enthaltenen Kommas, füttern Sie Zeichenfolgen in eine Funktion, die das Einfügen von CSV verarbeitet, usw.?

    – Frank DeRosa

    9. November 2009 um 20:01 Uhr

  • ok, die endgültige Ausgabe muss ein String sein, bei dem jedes Wort durch ein einzelnes Leerzeichen getrennt ist, im Moment sind es mehrere Leerzeichen.

    – joepur

    9. November 2009 um 20:05 Uhr

  • @Joe, ich würde keine Zeit verschwenden und anfangen, all denen Anerkennung zu zollen, die dir schon einmal geholfen haben! 🙂

    – Frankie

    10. November 2009 um 1:10 Uhr

1646633649 856 Entfernen Sie uberschussige Leerzeichen aus einer Zeichenfolge
jW.

Ich bin mir nicht sicher, was Sie wollen, aber hier sind zwei Situationen:

  1. Wenn Sie nur mit Überfluss zu tun haben Leerzeichen am Anfang oder Ende der Zeichenfolge, die Sie verwenden können trim(), ltrim() oder rtrim() es zu entfernen.

  2. Wenn Sie es mit zusätzlichen Leerzeichen innerhalb einer Zeichenfolge zu tun haben, ziehen Sie a in Betracht preg_replace von mehreren Leerzeichen " "* mit einer einzigen Leerzeichen " ".

Beispiel:

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

  • $foo = preg_replace( ‘/\s+/’, ‘ ‘, $foo );

    – Genie

    9. November 2009 um 20:19 Uhr

  • Verwendung der $foo = preg_replace( '/\s+/', ' ', $foo ); wird die Auswirkungen von töten nl2br()

    – Waiyl Karim

    17. Januar 2014 um 15:55 Uhr

  • Verwenden Sie einfach nl2br, bevor Sie preg_replace verwenden, und Sie sollten bereit sein.

    – Lukas Lies

    3. Juli 2014 um 7:03 Uhr

  • Tippfehler/Escaper-Hinweis – wenn der Code keine zusätzlichen Leerzeichen für Sie entfernt – stellen Sie sicher, dass Sie “\” vor “s” haben 🙂 Einige Online-PHP-Testseiten entfernen es 🙂

    – jave.web

    3. Juli 2016 um 11:27 Uhr

  • Das sollte CSS-sicher sein, oder? Wie in, würde dies eine Variable mit einer langen, mehrzeiligen CSS-Zeichenfolge sicher komprimieren?

    – David

    19. Oktober 2017 um 1:51 Uhr

$str = str_replace(' ','',$str);

Oder durch Unterstrich ersetzen, & nbsp; usw usw.

  • Dadurch werden alle Leerzeichen entfernt. Er will nur die Saite normalisieren.

    – Svend

    28. April 2010 um 13:11 Uhr

  • Was ich gesucht habe (auch wenn es nicht die Frage war)

    – Robert Johnston

    16. Mai 2012 um 14:17 Uhr

  • @Gigala “Was wäre der beste Weg, um die inneren Leerzeichen zu entfernen?” war die Frage. Diese Antwort erfüllt das perfekt.

    – Cory Dee

    13. September 2013 um 17:14 Uhr

  • @CoryDee Das stimmt für diesen letzten Satz. Aber in der Einleitung wird die Frage formuliert als “Überschuss Whitespace”, mit Betonung auf dem Exzess. Am Ende haben Sie das TATSÄCHLICHE Problem des OP befriedigt, also spielt es keine Rolle, aber solange wir es bekommen technisch darüber…

    – Spencer Ruskin

    9. Oktober 2013 um 23:14 Uhr


  • Dies funktioniert nicht, wenn die Anzahl von Räume ist gerade Zahlnehmen wir mal an: Hi Earth mit 4 Räume dazwischen wird: HiEarth. Dies löst nicht mein Problem mit Relevanz für die Frage.

    – JJ Labajo

    6. Mai 2019 um 3:10 Uhr

Entfernen Sie uberschussige Leerzeichen aus einer Zeichenfolge
Lukas Liese

Keines der anderen Beispiele hat bei mir funktioniert, also habe ich dieses verwendet:

trim(preg_replace('/[\t\n\r\s]+/', ' ', $text_to_clean_up))

Dadurch werden alle Tabulatoren, neue Zeilen, doppelte Leerzeichen usw. durch einfaches 1 Leerzeichen ersetzt.

  • Danke, @wp78de, aber aus irgendeinem Grund hatte ich Probleme mit just \s+. Obwohl es im Jahr 2014 war, wurde es vielleicht geändert, ich habe PHP in den letzten 3 Jahren nicht berührt, kann nichts dazu sagen, werde aber die aktuelle Antwort hinterlassen, während es eine Lösung war und in einigen Fällen immer noch sein kann.

    – Lukas Lies

    12. Oktober 2018 um 3:57 Uhr

1646633650 407 Entfernen Sie uberschussige Leerzeichen aus einer Zeichenfolge
d-_-b

$str = trim(preg_replace('/\s+/',' ', $str));

Die obige Codezeile wird entfernt extra Leerzeichen sowie führende und abschließende Leerzeichen.

1646633650 864 Entfernen Sie uberschussige Leerzeichen aus einer Zeichenfolge
Apsar

Wenn Sie nur mehrere Leerzeichen in einer Zeichenfolge ersetzen möchten, zum Beispiel: "this string have lots of space . "
Und Sie erwarten, dass die Antwort lautet
"this string have lots of space"können Sie die folgende Lösung verwenden:

$strng = "this string                        have lots of                        space  .   ";

$strng = trim(preg_replace('/\s+/',' ', $strng));

echo $strng;

  • Funktioniert absolut gut

    – Sarawana

    12. Januar um 15:52 Uhr

1646633651 319 Entfernen Sie uberschussige Leerzeichen aus einer Zeichenfolge
Formular

Es gibt Sicherheitslücken bei der Verwendung von preg_replace(), wenn Sie die Nutzdaten aus Benutzereingaben erhalten [or other untrusted sources]. PHP führt den regulären Ausdruck mit eval() aus. Wenn die eingehende Zeichenfolge nicht ordnungsgemäß desinfiziert wird, besteht die Gefahr, dass Ihre Anwendung dieser Gefahr ausgesetzt wird Code-Injektion.

In meiner eigenen Anwendung habe ich, anstatt die Eingabe zu bereinigen (und da ich nur mit kurzen Zeichenfolgen arbeite), stattdessen eine etwas prozessorintensivere Funktion erstellt, die jedoch sicher ist, da sie nichts auswertet.

function secureRip(string $str): string { /* Rips all whitespace securely. */
  $arr = str_split($str, 1);
  $retStr="";
  foreach ($arr as $char) {
    $retStr .= trim($char);
  }
  return $retStr;
}

  • Funktioniert absolut gut

    – Sarawana

    12. Januar um 15:52 Uhr

1646633651 15 Entfernen Sie uberschussige Leerzeichen aus einer Zeichenfolge
Amir Fo

$str = preg_replace('/[\s]+/', ' ', $str);

963480cookie-checkEntfernen Sie überschüssige Leerzeichen aus einer Zeichenfolge

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

Privacy policy