日本語はマルチバイト文字なのでstrlen
ではなくmb_strlen
を使います。
なお、mb_internal_encoding
でエンコードを指定する必要があります。
<?php $string = ""; $length = 0; if($_SERVER['REQUEST_METHOD'] === 'POST'){ if(isset($_POST['string'])){ $string = $_POST['string']; mb_internal_encoding('UTF-8'); $length = mb_strlen($_POST['string']); } } ?> <html> <head> <meta charset="UTF-8"> <title>encodeTest</title> </head> <form method="POST" action=""> <input type="text" name="string"> <input type="submit" name="submit" value="check length!"> </form> length of <?php echo $string; ?> is <?php echo $length; ?> </html>