注册 登录
编程论坛 PHP技术论坛

各位老师好,我是一位留学生,现在正在自学PHP语言,关于htmlspecialchars我有一点不懂,希望有好心的老师可以教教我,谢谢!

rikacho 发布于 2021-08-17 15:53, 1449 次点击
关于htmlspecialchars的函数化,不知道为什么我照着书写的这个代码无法运行,上面的日语大家看不懂的话也不用在意,只看编码就好了,谢谢

以下是编码

<?php
// XSS対策のためのHTMLエスケープ
function es(array|string $data, string $charset='UTF-8'):mixed {
  // $dataが配列のとき
  if (is_array($data)){
    // 再帰呼び出し
    return array_map(__METHOD__, $data);
  } else {
    // HTMLエスケープを行う
    return htmlspecialchars(string:$data, flags:ENT_QUOTES, encoding:$charset);
  }
}

// 配列の文字エンコードのチェックを行う
function cken(array $data):bool{
  $result = true;
  foreach ($data as $key => $value) {
    if (is_array($value)){
      // 含まれている値が配列のとき文字列に連結する
      $value = implode("", $value);
    }
    if (!mb_check_encoding($value)){
      // 文字エンコードが一致しないとき
      $result = false;
      // foreachでの走査をブレイクする
      break;
    }
  }
  return $result;
}
// ?>
1 回复
1