2017-02-26 75 views
0

我是PHP新手,試圖計算文本區域中的所有大寫字母,以爲我點擊「提交」按鈕時無法獲取任何內容。這裏是我的代碼:PHP計數大寫字母(不工作)

<!DOCTYPE html> 
<html> 
<body> 
<?php 
if(isset($_POST['submit'])) { 
function caps($s) { 
    $u = 0; 
    $d = 0; 
    $n = strlen($s); 

    for ($x=0; $x<$n; $x++) { 
     $d = ord($s[$x]); 
     if ($d > 64 && $d < 91) { 
      $u++; 
     } 
    } 

    return $u; 
    } 
    $n1=$_POST['n1']; 
    echo 'caps: ' . caps($n1) . "\n"; 
} 
?> 
    <form><textarea rows="4" cols="50" name="n1" value="<?php if(isset($_POST['n1'])){echo htmlspecialchars($_POST['n1']);}?>"></textarea> 
<br><input type="submit" name="submit" value="Submit"></form> 
</body> 
</html> 
+0

必須有一個'

''爲了提交。將你的提交按鈕和文本區域放在一個表格 –

+0

謝謝我得到的按鈕仍然工作我沒有得到所需的輸出 –

+0

文本也應該進入窗體標籤 –

回答

0

你忘了設置窗體方法來發表您的代碼應該是這樣的:

<!DOCTYPE html> 
<html> 
<body> 
<?php 
if(isset($_POST['submit'])) { 
function caps($s) { 
    $u = 0; 
    $d = 0; 
    $n = strlen($s); 

    for ($x=0; $x<$n; $x++) { 
     $d = ord($s[$x]); 
     if ($d > 64 && $d < 91) { 
      $u++; 
     } 
    } 

    return $u; 
    } 
    $n1=$_POST['n1']; 
    echo 'caps: ' . caps($n1) . "\n"; 
} 
?> 
    <form method="post"><textarea rows="4" cols="50" name="n1" value="<?php if(isset($_POST['n1'])){echo htmlspecialchars($_POST['n1']);}?>"></textarea> 
<br><input type="submit" name="submit" value="Submit"></form> 
</body> 
</html> 

確保你的表單方法設置爲。 如果您不提供方法,表單使用get方法而不是post方法。

0

這個例子會幫助你。

preg_match_all("/[A-Z]$/", $s, $matches); 
$all_upper_cases = count($matches); 
+0

它關於我面臨的文本框問題不是函數 –

0

使用此功能:

function count_capitals($s) { 
    return strlen(preg_replace('![^A-Z]+!', '', $s)); 
} 

前。

$n1=$_POST['n1']; 
echo 'caps: ' . count_capitals($n1) . "\n"; 

文本框:

<textarea rows="4" cols="50" name="n1" value="<?php count_capitals($n1) ?>"></textarea> 
+0

沒有顯示出來,我只是把函數放在if語句中並替換了textarea。和前。 –