IF-Abfrage in IF-Abfrage - Ausgrenzen?

Jetzt bin ich etwas verwirrt?

Bedeutet "Hardcoded" nicht, dass der Programmierer z.B. eine unverändere Variable gesetzt hat, die durch keine normale Eingabe eines Benutzer veränderbar ist?

Hardcoded = Fest im Skript eingebaut ?
 
PHP:
$text = 'Ich mag PHP';

if ($var_5 == 'Ja') {
   $erlaubte_zeichen = 'A-Z0-9'; 
   $erlaubte_länge = '180';
}
   else
{
   $erlaubte_zeichen = 'A-Z0-9'; 
   $erlaubte_länge = '280';
}

if(preg_match('/^[$erlaubte_zeichen]{$erlaubte_länge}$/', $text) {  

Code Code Code
Code Code Code
Code Code Code

}
Das wird so nicht funktionieren.

Die Variablen $erlaubte_zeichen und $erlaubte_länge (Umlaut im Variablennamen?) greifen in einem String, welcher in einfachen Anführungszeichen steht nicht.

Das Pattern erwartet in deinem Fall entweder genau 180 Zeichen oder genau 280 Zeichen.

Dann brauchst Du die erlaubten Zeichen auch nicht im if- und else-Block definieren, beides Mal sind die Zeichen gleich.

PHP:
$text = 'Ich mag PHP';

if ( $var_5 == 'Ja' )
{
    $erlaubte_laenge = '180';
}
else
{
    $erlaubte_laenge = '280';
}

if ( preg_match( "#^[A-Z0-9]{0,$erlaubte_laenge}$#", $text ) )
{  
    // Code und so
}

Gruß
 
@Raisch:
Du hast natürlich recht.

Es muss:
PHP:
{0,$erlaubte_laenge}
sein.

Die Pattern sind aber eigentlich auch unterschiedlich. Und die gehen als Variable nicht?
 
Klar gehen die auch als Variablen.
PHP:
$text = 'Ich mag PHP';

if ( $var_5 == 'Ja' )
{
    $erlaubte_zeichen = 'A-Z0-9';
    $erlaubte_laenge  = '180';
}
else
{
    $erlaubte_zeichen = 'A-Z0-9undAndere';
    $erlaubte_laenge  = '280';
}

if ( preg_match( "#^[$erlaubte_zeichen]{0,$erlaubte_laenge}$#", $text ) )
{  
    // Code und so
}

Gruß
 
Ich habe eben leider festgestellt das:
PHP:
$erlaubte_laenge  = '0,180';

if ( preg_match( "#^[$erlaubte_zeichen]{$erlaubte_laenge}$#", $text ) )
{  
    // Code und so
}
nicht funktioniert.

Wieso wird das Komma nicht als "Code Komma" akzeptiert?
 
Wegen den geschweiften Klammern funktioniert es nicht.

Versuch es mal damit:
PHP:
if ( preg_match( "#^[{$erlaubte_zeichen}]{{$erlaubte_laenge}}$#", $text ) )

Gruß
 
Ist denn so etwas evtl. auch möglich?

PHP:
$text = 'Ich mag PHP';
$erlaubte_zeichen = 'A-ZÄÖÜ\@'; //  'A-Z' geht auch nicht
$min_laenge = '1';
$max_laenge = '100';

if (preg_match("#^[{$erlaubte_zeichen}]{{$min_laenge},{$max_laenge}}$#", $text)) {
}

So wie im Code funktioniert es zwar nicht aber es wird auch kein Fehler ausgegeben.
 
Zurück