
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?

jW.
Ich bin mir nicht sicher, was Sie wollen, aber hier sind zwei Situationen:
-
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.
-
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);
$str = str_replace(' ','',$str);
Oder durch Unterstrich ersetzen, & nbsp; usw usw.

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.

d-_-b
$str = trim(preg_replace('/\s+/',' ', $str));
Die obige Codezeile wird entfernt extra Leerzeichen sowie führende und abschließende Leerzeichen.

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;

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

Amir Fo
$str = preg_replace('/[\s]+/', ' ', $str);
9634800cookie-checkEntfernen Sie überschüssige Leerzeichen aus einer Zeichenfolgeyes
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