paranitips

Never stop learning! がモットーのゆるふわエンジニアブログ

PHPで日本語の文字数をカウントする

日本語はマルチバイト文字なので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>

参考