Wie kann ich überprüfen, ob eine Zeichenfolge nur enthält Leerzeichen?
Wenn Zeichenfolge nur Leerzeichen enthält?
Johannes Knöller
if (strlen(trim($str)) == 0)
oder wenn Sie keine leeren Zeichenfolgen einfügen möchten,
if (strlen($str) > 0 && strlen(trim($str)) == 0)
-
ich würde sagen
if (strlen(trim($str)) != strlen($str))
– Esteban Küber
28. Februar 2010 um 21:39 Uhr
-
@voyager: das würde bestimmen, ob die Zeichenfolge hatte irgendein Führende oder nachgestellte Leerzeichen, die Frage ist, ob es vorhanden ist nur Räume.
– Johannes Knöller
28. Februar 2010 um 21:42 Uhr
-
@voyager: Was ist mit
" hello world "
? In diesem Fallstrlen(trim($str))
ist 11 undstrlen($str)
ist 15, aber die Zeichenfolge ist es nicht nur aus Leerzeichen zusammengesetzt.– Wilhelm Brendel
28. Februar 2010 um 21:43 Uhr
-
Punkt genommen, aber es müsste sein
if ((strlen(trim($str)) != strlen($str)) && (strlen(trim($str)) == 0))
wenn Sie sicherstellen möchten, dass der String nur Leerzeichen enthält, aber es ist nicht ein leer Schnur.– Esteban Küber
28. Februar 2010 um 23:01 Uhr
-
@voyger: das ist immer noch übertrieben. tun
if (strlen($str)>0 && strlen(trim($str))==0)
Wenn es das ist was du willst. oder verwenden!empty($str)
. Warum würden Sie sich die Mühe machen, es mit der getrimmten Saite zu vergleichen?– mp
1. März 2010 um 1:21 Uhr
von: https://stackoverflow.com/a/2992388/160173
Wenn Sie positiv abstimmen möchten, tun Sie dies bei der anderen Antwort, nicht bei dieser!
Das geht am schnellsten:
$str=" ";
if (ctype_space($str)) {
}
Kehrt zurück false
auf leere Zeichenfolge, da leer kein Leerzeichen ist. Wenn Sie eine leere Zeichenfolge einschließen müssen, können Sie hinzufügen || $str == ''
Dies führt immer noch zu einer schnelleren Ausführung als Regex oder Trim.
als eine Funktion:
function stringIsNullOrWhitespace($text){
return ctype_space($text) || $text === "" || $text === null;
}
echo preg_match('/^ *$/', $string)
Sollte arbeiten.
-
@stereofrog: Ich stimme respektvoll nicht zu. Regexes sind für so etwas übertrieben, was von eingebauten Funktionen perfekt gehandhabt werden kann.
– Esteban Küber
1. März 2010 um 16:30 Uhr
-
Das stimmt, und vielleicht sind eingebaute Funktionen wie von John gezeigt schneller als Regexp. Aber ich liebe Regexp, und ich mache alles, was ich kann, mit ihnen, auch wenn es überhaupt nicht nötig ist. Und außerdem war ich mir sicher, dass die einfachsten Lösungen gepostet wurden, ich möchte nur, dass die Leute Regexp nicht vergessen: D
– Enrico Carlesso
1. März 2010 um 17:03 Uhr
-
gibt immer 0 zurück für ——– $str = “ffff gggg”; echo preg_match(‘/^ *$/’,$str);
– Benutzer889030
17. Januar 2017 um 17:21 Uhr
Prüfen Sie, ob das Ergebnis von trim() länger als 0 ist
Verwenden Sie einen regulären Ausdruck:
$result = preg_match('/^ *$/', $text);
Wenn Sie auf Leerzeichen testen möchten, nicht nur auf Leerzeichen:
$result = preg_match('/^\s*$/', $text);
mpen
Ich denke, die Verwendung von regulären Ausdrücken ist übertrieben, aber hier ist trotzdem eine andere Lösung:
preg_match('`^\s*$`', $str)
Geisterhund74
ein anderer Weg
preg_match("/^[[:blank:]]+$/",$str,$match);
Irgendein Whitespace oder nur Leerzeichen?
– Wilhelm Brendel
28. Februar 2010 um 21:37 Uhr
mögliches Duplikat von How to check if there are only spaces in string in PHP?
– Molot
5. März 2014 um 10:11 Uhr
substr_count($str, ' ') === strlen($str)
– kräh
27. Juli 2016 um 1:10 Uhr
@caw Beste Antwort! Die Frage fragte nach einer Möglichkeit zu erkennen, ob eine Zeichenfolge nur enthält Räumedie meisten Antworten prüfen, ob nur Zeichenfolgen enthalten sind Leerzeichen.
– Leia
2. April 2017 um 7:29 Uhr