Function verkürzen

Brauche mal hilfe, es geht um die Funktion weiter unten.
Diese funktioniert und ist nix weiter aufregendes.

Jeder kennt das Problem der Inputfelder, sobald nur ein leerzeichen oder gar nichts eingegeben wird, ist es ja simpel dies abzufangen.

Als ich damals angefangen haben PHP zu lernen, habe ich es eben so gemacht wie
es üblich ist. Das fand ich aber nach geraumer Zeit wirklich blöde, und führte dann auch zu Problemen, da ein User ja einfach die Leertaste 20 mal drücken kann und dann eben in dem Inputfeld als value-wert das Leerzeichen vorhanden ist. Und dies ist ja auch eine Eingabe, und somit kann diese Eingabe abgesendet werden.

Meine Funktion verhindert dieses nun, diese verwende ich jetzt schon seit 2 Jahren ca.
in meinen eigenen Scripten, da sie mir aber vom Code her überhaupt nicht gefällt, frage ich hier nun

1. kann man diese verkürzen ?
2. geht das vielleicht viel viel einfacher ?
3. Ist diese völliger schwachsinn ?

Wenn jemand darauf antwortet, bitte ich um Begründete Aussagen, warum diese eventuell schlecht sei, oder sogar um bessere Lösungen.
Was würdet Ihr anders machen ?

PHP:
  function test_string($wert="")
  {
  	if($wert!="")
  	{
  		$text = $wert;
  		$laenge = strlen($text);
  
  		$leerzeichen = " ";
  
  		for($q=0;$q<$laenge-1;$q++)
  		$leerzeichen.=" ";
  			
  		$treffer = substr_count($leerzeichen, $text);
  		
  		if($treffer=="0")
  		{
  			return TRUE;
  		}	
  		else
  		{	
  			return FALSE;
  		}
  	}
  	else
  	return FALSE;
  }

MfG Kleiner Wicht
 
Du suchst also in der Variablen $leerzeichen wie oft die Variable $text vorkommt.

php.net Function Dokumentation hat gesagt.:
int substr_count ( string haystack, string needle )

Die Funktion substr_count() ermittelt, wie oft needle in dem String haystack vorkommt, und gibt die Anzahl der Vorkommen zurück.

Waere es nicht sinnvoller das umgekehrt anzugehen, und dann zu checken ob das Ergebnis dieser Zaehler gleich der Laenge von $text ist. Somit wuerdest Du auf jeden Fall feststellen ob $text ausschliesslich aus Leerzeichen besteht.
 
MMM

Ich dachte eigentlich das erstmal die Länge des eingegebenen Strings ermittelt wird,
dann wird mit der schleife die selbe länge mit lerrzeichen aufgefüllt, und dann
wird verglichen ob der übergebene String und der leerzeichen String identisch sind.

Wenn identisch dann weiß ich das es nur leerzeichen waren.

Oder gibt es eine möglichkeit, einen completten String auf jedes einzelne Zeichen zu testen und dann sobald ein zeichen kein leerzeichen ist, gilt es als TRUE.

Nur wenn alle Zeichen ein leerzeichen sind dann gilt eingabe = UNGÜLTIG.

MfG Kleiner Wicht
 
Hab meine Ausfuehrungen jetzt mal in Code umgesetzt, das sollte ungefaehr so aussehen:
PHP:
function test_string($wert="")
  {
      if($wert!="")
      {
          $text = $wert;
          if ($substr_count($text," ")==strlen($text))
                 {
                       return FALSE;
                 }
          else
                 {
                       return TRUE;
                 }
  }

Ist auf jeden Fall schonmal wesentlich kuerzer.
 
PHP:
  <?PHP
  
  function test_string($wert="")
  {
        if($wert!="")
        {
            $text = $wert;
            if (substr_count($text," ")==strlen($text))
                   {
                         return FALSE;
                   }
            else
                   {
                         return TRUE;
                   }
       }
  }
  
  echo test_string("   j"); //(gibt als rückgabe 1)
  echo test_string("    "); //(gibt als rückgabe 0)
  
  //klasse lösung !
  ?>
 
Wie Du ja selbst sagstest wird ein input-Feld auch uebergeben wenn Du es einfach nur mit Leerzeichen fuellst. Die Funktion checkt jetzt einfach nur was ich vorher beschrieben hab, ob die Anzahl der Leerzeichen identisch mit der Laenge des Strings ist.
Wenn ja: boese, sonst: fein!
 
PHP:
  if (substr_count($text," ") == strlen($text))
  	   return FALSE; 
  else
  	   return TRUE;

Habe das nie richtig geschnallt (substr_count), aber jetzt funkt es.


Besten DANK für DEINE Hilfe

MfG Kleiner Wicht
 
Zuletzt bearbeitet:
PHP:
function test_string($wert="")
  {
      if($wert!="")
      {
          $text = $wert;
          if ($substr_count($text," ")==strlen($text))
                 {
                       return FALSE;
                 }
          else
                 {
                       return TRUE;
                 }
  }
Warum denn einfach wenns umständlich auch geht?
http://de3.php.net/manual/de/function.trim.php
PHP:
function test_string($text="", $min_len)
  {
          if (strlen(trim($text))<$min_len)
                 {
                       return FALSE;
                 }
          else
                 {
                       return TRUE;
                 }
  }
 
Zurück