2016-11-08 129 views
-2
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title><?php echo "Homework1_1"?></title> 
</head> 
<body> 

<form action="" method="post"> 
<input name ="name" type = "text" placeholder="Type your Name"> 
<input name = "age" type = "text" placeholder = "Type your age"> 
<input type = "submit"> 
</form> 
<?php 
if(isset($_POST["name"])){ 
$Name =["name"]; 
$Age = ["age"]; 
if(preg_match("[0-10]", $name)){ 
    echo "Failed, name can not be number"; 
} 
if(preg_match("/[a-zA-Z + ] +/",$ar)){ 
    echo "Failed, age cannot have letter"; 
} 
if((!preg_match("[0-10]", $Name))&&(!preg_match("/[a-zA-Z + ] +/",$Age))){ 
    echo "Welcome! Your name is $Name and you are $Age years old"; 
} 
} 
?> 
</body> 
</html> 

這是我的程序代碼。 我希望如果我在$ Name = [「name」]中寫入數字或在$ Age = [「age]中輸入字母,網站將顯示類似於塊中的錯誤消息,但是當我運行代碼並鍵入一些值兩個框,網站每次顯示我任何人都可以幫我preg_match?那有什麼問題?

警告:的preg_match()預計參數2爲字符串,陣列中 C中給出:\ XAMPP \ htdocs中\ php_workshop_1_citat \ GrundOvningar \ homework1_1_post.php 第18行

警告:的preg_match()預計參數2爲字符串,陣列中 C中給出:\ XAMPP \ htdocs中\ php_workshop_1_citat \ GrundOvningar \ homework1_1_post.php 第21行

警告:的preg_match()預計參數2爲字符串,陣列中 C中給出:\ XAMPP \ htdocs中\ php_workshop_1_citat \ GrundOvningar \ homework1_1_post.php 上線26

警告:的preg_match()預計參數2是字符串,陣列中 C中給出:\ XAMPP \ htdocs中\ php_workshop_1_citat \ GrundOvningar \ homework1_1_post.php 上線26

通知:Array對字符串的轉換在 C:\ XAMPP \ htdocs中\ php_workshop_1_citat \ GrundOvningar \ homework1_1_post第27行上的.php

注意:數組字符串轉換在 C:\ XAMPP \ htdocs中\ php_workshop_1_citat \ GrundOvningar \ homework1_1_post.php 第27行

歡迎您!你的名字是陣列,你是陣列年代

我做錯了什麼?也許我不需要使用preg_match?如果是這樣,我該怎麼辦?

+0

[PHP:「注意:未定義變量」和「通知:未定義的索引」]的可能的複製(http://stackoverflow.com/questions/4261133/php -notice-undefined-variable-and-notice-undefined-index) –

+0

重新閱讀你的課本。 – AbraCadaver

回答

3

PHP變量是大小寫敏感的

if(isset($_POST["name"])) { 
    $name = $_POST["name"]; 
    $age = $_POST["age"]; 
    if(preg_match("[0-10]", $name)){ 
    echo "Failed, name can not be number"; 
    } 
    if(preg_match("/[a-zA-Z + ] +/", $age)) { 
    echo "Failed, age cannot have letter"; 
    } 
    if((!preg_match("[0-10]", $name)) && (!preg_match("/[a-zA-Z + ] +/",$age))) { 
    echo "Welcome! Your name is $Name and you are $Age years old"; 
    } 
} 
+0

爲什麼downvote? – Jaime

+0

不是我的失望,但它似乎是兩個發佈的答案確定兩個不同的問題,並留下其他問題未解決。 – David

+0

你錯過了'$ _POST ['name']'和'preg_match()'也沒有正確的形成。 –

1

你的代碼是錯誤的

$name =["name"]; 
$age = ["age"]; 

應該

$name = $_POST["name"]; 
$age = $_POST["age"]; 

而且,你的preg_match應該是:

對於數字:

preg_match("/[0-9]/", $name) 

對於字母:

preg_match("/[a-zA-Z]/", $age) 
+0

謝謝!現在我的程序沒有顯示任何錯誤,但是當我在名稱框中輸入數字時,例如3,網站顯示我的名字是3.與年齡相同,但這不是我想要的。他們必須顯示錯誤!你知道該怎麼辦? – javaprogrammer

+0

你的preg_match也是錯誤的,檢查數字使用[0-9],並檢查字母使用[a-zA-Z] –

+0

你的意思是哪個preg_match?這是我第一次在代碼中使用preg_match,所以我不知道你的意思是什麼 – javaprogrammer

相關問題