SHIFTRA
✿☀☁☂☃☄❀
Browse: Home » 2012 » 6月 » PHPで あらゆる文字をhtmlentityする

PHPで あらゆる文字をhtmlentityする

しょうなり 2012年6月28日

HTMLで使われる特殊文字というのがある。
たとえば &lt; とか &gt; とかで、これらをHTMLソースに書くと画面表示上では < ならび > で表示される。

PHPには htmlentities() とか htmlspecialchars() といったネイティブ関数が用意されているが、一部の文字しか変換してくれないようだ。
本当は ASCII値を渡せばどんな文字でもhtmlentityで表現できる。
この htmlentity文字列だと、日本語のWebページに他言語のマルチバイト文字(中国語やハングル文字)などを埋め込むことができるし、メールアドレスの難読化ができて、メアド収集ロボットに対する防止になる(かもしれない)。

そこで、PHPによる変換するスクリプトを書いてみた。

※関数名は適当。&から始まる文字列になるので、ampencode()って名前にしました。

class Common
{
    /**
     *  渡された文字列を WEB上でのみ表示される文字列に変換します。
     * @param   string  $str        変換したい文字列
     * @param   string  $encode     マルチバイト文字列のエンコードの指定
     * @return  string              変換後の文字列
     */
    public static function ampencode($str = '', $encode = 'UTF-8')
    {
        $len = mb_strlen($str, $encode);
        $rtn = '';

        for ($pos = -1; ++$pos < $len;)
        {
            $letter = mb_substr($str, $pos, 1, $encode);

            //  ASCII文字の変換
            if (strlen($letter) === 1)
            {
                $rtn .= sprintf('&#x%02x;', ord($letter));
            }

            //  マルチバイトの変換
            else
            {
                $utf = mb_convert_encoding($letter, 'UTF-16', $encode);
                $rtn .= sprintf('&#x%02x%02x;', ord(substr($utf, 0, 1)), ord(substr($utf, 1, 1)));
            }
        }

        return $rtn;
    }
}

これで渡された文字はバシバシ htmlentity化される。

Common::ampencode("sample@email.com");

出力例:

&#x73;&#x61;&#x6d;&#x70;&#x6c;&#x65;&#x40;&#x65;&#x6d;&#x61;&#x69;&#x6c;&#x2e;&#x63;&#x6f;&#x6d;

マルチバイト文字もこんな感じ。

Common::ampencode("☂");

出力例:

&#x2602;

ちなみに、JavaScriptでこれだけのことをしてくれるページもあるので、ちょっと変換したいだけの場合はこちらを使うと良さげなり^^
http://thira.plavox.info/htmlentity/

共有:

  • シェア
  • 印刷
  • Twitter
  • Facebook
PHP, html entity, PHP
← Previous Next →

サイト内検索

Categories

  • グッズ (4)
    • お勧めグッズ (4)
  • コンピュータの話 (8)
    • Facebook (1)
    • JavaScript (1)
    • PHP (3)
    • アプリケーション (1)
    • サーバーセッティング (1)
  • 商品 (3)
    • お勧め商品 (1)
    • 商品ジャンル (3)
      • タブレット (3)
  • 雑談 (14)
  • 音楽 (12)

最近のコメント

    くもっくるミラクル♪ぴっぴlきゅぅきゅぅ収録!
    ノン子「恋する♡ぱにゃにゃんだー」 さなせなぼな「ぐぅぐぅ元気!」 収録^^

    Tags

    ErrorException Facebook gooラボ html entity JavaScript jQuery mini displayport PHP Sakura Editor set_error_handler SIM FREE wu-ftpd xinetd ZendFramework ひらがな化API ゆめ ノン子 大崎一番太郎 恋パニャ 自転車

    Archives

    • 2020年11月 (1)
    • 2018年8月 (1)
    • 2016年12月 (2)
    • 2016年8月 (1)
    • 2016年1月 (3)
    • 2015年11月 (1)
    • 2015年7月 (1)
    • 2015年3月 (2)
    • 2014年2月 (1)
    • 2012年6月 (8)

    Copyright © 2023 SHIFTRA.

    Powered by WordPress and Fanwood.