2017-02-26 67 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。和前。 –