Regular Expressions

matzseesi

Erfahrenes Mitglied
Hi Leute

Habe ein Problem mit den Regular Expressions hab auch schon das Tutorial angschaut verstehe aber noch ein paar Sachen nicht.
PHP:
 function checkspstring($char)
 {
  if (ereg("[,|]+",$char))
  {
   $error=1;
   return $error;
  }
 }

Mit dieser Funktion möchte ich überprüfen ob ein , bzw ein | eingegeben wurde. Wenn ja dann soll er mir einen 1ser zurückgeben! was hab ich da falsch geshrieben. wenn ich zb Martin| eingebe dann haut das nicht hin der gibt mir keinen Fehler aus.
 
Das geht auch ohne RegEx:
PHP:
function checkstring($a_sInput)
{
    if ((strpos($a_sInput, '|') !== false) || (strpos($a_sInput, ',') !== false)) {
        return false; // bei einem `check' im Funktionsnamen erwartet man eher ein false bei einem Fehler
    } else {
        return true;
    }
}

// oder mit RegEx:
function checkstring($a_sInput)
{
    return !preg_match('#[,|]#', $a_sInput);
}
 
Das Problem bei Deinem RegExp war, dass das Zeichen "|" reserviert ist. und zwar wird dadurch eine Zeichenauswahl erstellt. Wenn Du das Zeichen dennoch verwenden möchtest, musst Du es quoten:
Code:
function checkspstring($char)
{
  if (ereg("[,|\|]+",$char))
  {
   $error=1;
   return $error;
  }
}

snuu
 
Code:
 function checkspstring($char)
 {
  if (ereg("[,|\|]+",$char))
  {
   $error = '1';
   return $error;
  }
 }

So funktionierts leider auch nicht

Ich übergebe im $char = 'asdf,';

und frage so ab
PHP:
if (checkspstring($char)=='1')
{
 echo 'error';
}
 
Also das funktioniert bei mir!
Code:
<?php

function checkspstring($char) {
  if (ereg("[,|\|]+",$char)) {
    $error = '1';
    return $error;
  }
}

$char = 'asdf,';

if (checkspstring($char)=='1') {
  echo 'error';
}

?>
 
also nochmal

Diese Beide Funktionen überprüfen eine Eingabe von einem User
Code:
 function checksql($char)
 {
  $char=mysql_escape_string($char);
  $char=addslashes($char);
  return $char;
 }
 
 function checkspstring($char) 
 {
  if (ereg("[,|\|]+",$char)) 
  {
   $error = '1';
   return $error;
  }
 }

Ok?
Nun sagen wir gibt der User ein Martin|

dann wird auf der Action Seite so überprüft
Zuerst kommt
Code:
$f_uv_vorname    = checksql(trim($HTTP_POST_VARS["f_uv_vorname"]));

und dann noch

Code:
if (($f_uv_vorname=='')||(checkspstring($f_uv_vorname)=='1'))
  {
   echo 'Bitte geben Sie einen g&uuml;ltigen Vornamen ein<br><br>';
   echo '<div class="buttonuv" onMouseOver="javascript:highlight(this);" onMouseOut="javascript:unhighlight(this);"><a href="javascript:history.back()">Zurück zum Formular</a></div>';   
   echo '</tr></td></table>';
   return;
  }

Aber der liefert mir keinen Fehler
der tragt dies ganz normal in die Datenbank ein

Auch wenn der Name MartinINSERT hießt zb (Wobei ich nicht weiß ob die escape string fkt dies akzeptiert oder nicht
 
Ich arbeite nun mit den Regular Expressions und die sind mit der Zeit sogar ziemlich verständlich... nun tritt aber ein Problem auf:

Parse error: parse error in c:\programme\apache group\apache\htdocs\docs\vorlagen\work_psgeneralt.php on line 26

Der Code dazu:

PHP:
if(preg_match("$code, '$_POST[ code ]'"))
{
}
else
{
$Val = 1;
print "Falsche Eingabe in Code";
}

Die Variable:

PHP:
$code = "/^[0-9]{2}$/";

$Val steht dafür da, wenn bei einer späteren Abfrage $Val nicht 0 ist, geht die ganze Eintragung gar nicht weiter...

Ich finde da oben einfach keinen Fehler...
 
Mir ist gerade aufgefallen, das ich obeerhalb noch ne Variable offen hatte... hab das geändert, dann kam diese Nachricht: (Immer noch mit den gleichen Texten)

Warning: preg_match() expects at least 2 parameters, 1 given in c:\programme\apache group\apache\htdocs\docs\vorlagen\work_psgeneralt.php on line 26
Falsche Eingabe in Code


Ändere ich den Code wie du es mir vorgeschlagen hast, Sven, kommt diese Meldung:

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\programme\apache group\apache\htdocs\docs\vorlagen\work_psgeneralt.php on line 26
 
Zurück