Member 13023527 Ответов: 4

Php подсчет заглавных букв (не работает)


Я новичок в PHP и пытаюсь сосчитать все заглавные буквы в текстовой области, но мне кажется, что я ничего не могу получить, когда нажимаю кнопку "Отправить". Вот мой код :

Что я уже пробовал:

<pre><!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>

4 Ответов

Рейтинг:
2

Peter Leow

Вы забыли добавить форму метод post:

<form method="post">
На данный момент он использует метод get по умолчанию, и ваш PHP-скрипт ожидает переменную $_POST. Учить Формы в HTML-документах[^]


Рейтинг:
2

Bryian Tan

Код выглядит нормально. Просто нужны небольшие изменения
1. добавьте сообщение в форму
2. переместите if (isset ($_POST ['submit'])) { в конце функции

<!DOCTYPE html>
<html>
<body>
<?php

 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;
   }
if(isset($_POST['submit'])) {
  $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>


Рейтинг:
0

Graeme_Grant

Еще один совет для вас: именование методов / переменных так же важно, как и сам код - это делает код более читаемым и легким для отладки. Правильный интервал тоже.

<!DOCTYPE html>
<html>
<body>
<?php

if(isset($_POST['submit'])) {
    function CountUppercase($text) {
        $count = 0;
        $character = 0;
        $length = strlen($text);

        for ($index = 0; $index < $length; $index++) {
                $character = ord($text[$index]);
                if ($character > 64 && $character < 91) {
                    $count++;
                }
        } 
        return $count;
    }
    $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


Рейтинг:
0

Patrice T

вы можете удалить эту строку кода:

$d = 0;

потому что значение никогда не используется.


Graeme_Grant

- Вы уверены?

$d = ord($s[$x]);

Patrice T

Да, значение 0 никогда не используется. Я не говорил, что переменная не используется.

Graeme_Grant

:P