秘密の単語のユーザー入力をテストする単純なゲームが期待どおりに機能していません。条件が評価されると、画面には何も戻されません。私はそれが単純な問題だと確信していますが、ここの質問/答えのほとんどは、私が探しているよりも複雑です。秘密の単語の機能が正しく機能しない理由
これは私が作業しているものです。ユーザーに正確に9文字の単語を入力するように依頼し、@記号を含める必要があります。すべてのキーボード文字もライブです。要件が満たされていない場合はユーザーにエコー、存在する場合は成功します。
<?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 –
おそらく間違っているのは、ASCII文字 '@' –
'の代わりにhtmlエンティティ'&#64'をテストしているからですpreg_match( "/ @ /"、$ secret_word) 'を実行します。しかし、あなたは単に 'if(strpos($ secret_word、 '@')!== false)'を使うことができます。 –