Einfaches Spiel zum Testen der Benutzereingabe für ein geheimes Wort funktioniert nicht wie erwartet. Wenn Bedingungen ausgewertet werden, wird nichts auf den Bildschirm zurückgegeben. Ich bin mir ziemlich sicher, dass es ein einfaches Problem ist, aber die meisten Fragen/Antworten hier sind komplizierter als ich glaube.Warum funktioniert meine geheime Wortfunktion nicht richtig?
Dies ist, was ich arbeite mit. Bitten Sie den Benutzer, ein Wort mit genau 9 Zeichen einzugeben, und es muss das @ -Symbol enthalten. Alle Tastaturzeichen sind auch live. Echo an Benutzer, wenn die Anforderung nicht erfüllt wird, oder Erfolg, wenn dies der Fall ist.
<?php
if (!isset($secret_word)) {
$secret_word = ''; }
/* prompt user to enter a secret word that contains 9 characters of which one must be @ sign and all keyboard characters are allowed. if the secret word isn't correct output what is wrong with the word. */
#get user input
$secret_word = filter_input(INPUT_POST, 'secret_word');
$wordTest = secretWord();
function secretWord() {
if (strlen($secret_word) < 9) {
echo "Secret word is too short!"; }
if (strlen($secret_word) > 9) {
echo "Secret word is too long!"; }
if (!preg_match("@", $secret_word)) {
echo "Secret word must contain @ sign"; }
if (strlen($secret_word) == 9 && preg_match("@", $secret_word)){
echo "$secret_word contains 9 characters and one sign.";}
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="q4.css">
<title>Untitled Document</title>
</head>
<body>
<div class="header">
<header><h1>Secret Scroll Game</h1></header>
</div>
<div class="output">
<p><?php echo $wordTest(); ?></p>
</div>
<div class="link">
<a href="q4_index.html">Back To Homepage</a>
</div>
</body>
</html>
http://php.net/manual/en/function.error-reporting.php –
Vielleicht ist es falsch, weil Sie für die HTML-Entität '& # 64' anstelle des ASCII-Zeichens' @ ' –
' testen preg_match ("/ @ /", $ geheimes_Wort) '. Aber Sie können einfach 'if (strpos ($ secret_word, '@')! == false)' verwenden. –