このエントリーをはてなブックマークに追加

更新日: 2016年2月25日

実行時間: 0.0269

テキストヘルパー

 テキストヘルパーは「 system/helper/text_helper.php 」ファイルで、テキストを色々な形に変換する
処理を行う関数が定義されています。

テキストヘルパーのロード

 「 CI_Loader 」クラスの「 helper() 」メソッドでロードします。

    $this->load->helper('text');

テキストヘルパーの関数

word_limiter($str, $limit = 100, $end_char = '…')

 第一引数で指定されたテキストを第二引数で指定された数の単語数に切り詰めます。

 切り詰められたテキストの末尾には、第三引数で指定された文字列が付加されます。
 デフォルトは「…」(…)です。

 単語数は、スペース・改行・タブ文字で区切られて数えられるため、日本語のような単語間の区切りが無い言語では 正確な単語数で切り詰められません。

    $text = "Yankee Doodle went to town A-riding on a pony Stuck a feather"
          . " in his hat And called it macaroni.";
    echo word_limiter($text, 10);
    // Yankee Doodle went to town A-riding on a pony Stuck…

    echo word_limiter($text, 10, '~');
    // Yankee Doodle went to town A-riding on a pony Stuck~

character_limiter($str, $n = 500, $end_char = '…')

 連続したスペースやタブを一つのスペースに置き換え、また、改行も一つのスペースに置き換えた後、
 第一引数で指定されたテキストを第二引数で指定された数の文字数を超えた次のスペースまでで
切り詰めます。

 切り詰められたテキストの末尾には、第三引数で指定された文字列が付加されます。
 デフォルトは「…」(…)です。

    $text = "Yankee Doodle went to town A-riding on a pony Stuck a feather"
          . " in his hat And called it macaroni.";
    echo character_limiter($text, 30);
    // Yankee Doodle went to town A-riding…

     この例では、30文字目は「A-riding」の「r」ですが、単語の区切りで切り詰められます。


ascii_to_entities($str)

 ASCIIコード「128」以上の拡張ASCII文字やマルチバイト文字を 実態参照文字に変換して返します。
(環境によってはマルチバイト文字の変換に失敗する可能性もあります。)

    $str = '¥100';
    echo ascii_to_entities($str);
    // ¥100

entities_to_ascii($str, $all = TRUE)

 実態参照文字列を元の文字列に変換して返します。

    $str = '¥100';
    echo entities_to_ascii($str);
    // ¥100

 第二引数にFALSEを指定すると下記に示す実態参照は変換されません。

    &amp; ( & )   &lt; ( < )   &gt; ( > )   &quot; ( " )   &apos; ( ' )   &#45; ( - )
    $str = 'Tom &amp; Jerry';
    echo entities_to_ascii($str, FALSE);
    // Tom &amp; Jerry

word_censor($str, $censored, $replacement = '')

 禁止ワードを他の文字列に変換して返します。

 第一引数に、検査する文字列を指定します。

 第二引数に、禁止したい文字列の配列を指定します。

 第三引数には、禁止ワードを置き換える文字列を指定します。指定しない場合は「####」に置き換えられます。

    $str = "Mommy, where's my booger?";
    $censored = array( 'shit', 'pee', 'booger');
    echo word_censor($str, $censord);
    // Mommy, where's my ######?

    echo word_censor($str, $censord, '****');
    // Mommy, where's my ****?

 以下に示す文字、及び、スペースを単語の区切りとして単語のマッチングを行うため、日本語のような
単語間の区切りが無い言語では利用できません。

    - _ ' " ` ( ) { } < > [ ] | ! ? @ # % & , . : ; ^ ~ * + = / 0-9 \n \r \t

highlight_code($str)

 プログラムのソースコードをハイライトカラーでブラウザに表示できるように変換して返します。

    $code = "class SomeClass extends CI_Controller {"
          . "    public function index()"
          . "    {"
          . "        echo 'Hellow World.';"
          . "    }"
          . "}";
    echo highlight_code($code);
    /*
    <code><span style="color: #000000">
    <span style="color: #007700">class&nbsp;</span>
    span style="color: #0000BB">SomeClass&nbsp;</span>
    span style="color: #007700">extends&nbsp;</span>
    span style="color: #0000BB">CI_Controller&nbsp;</span>
    span style="color: #007700">{
    &nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span>
    span style="color: #0000BB">index</span>
    span style="color: #007700">()
    &nbsp;&nbsp;&nbsp;{
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span>
    span style="color: #DD0000">'Hellow&nbsp;World.'</span>
    span style="color: #007700">;
    &nbsp;&nbsp;&nbsp;}
    }
    &nbsp;</span>
    </span>
    </code>
    */
    class SomeClass extends CI_Controller {
       public function 
    index()
       {
           echo 
    'Hellow World.';
       }
    }
     

highlight_phrase($str, $phrase, $tag_open = '<strong>', $tag_close = '</strong>')

 指定した文字列をハイライトするように変換したテキストを返します。

 第一引数には、元となるテキストを指定します。

 第二引数には、ハイライト対象の文字列を指定します。

 第三引数と第四引数は、第二引数で指定した文字列を囲む開始タグと閉じタグを指定します。
 デフォルトは「<strong>」と「</strong>」です。

    $text = '第二引数には、ハイライト対象の文字列を指定します。';
    $highlight = 'ハイライト';

    echo highlight_phrase($text, $highlight);
    // 第二引数には、ハイライト対象の文字列を指定します。

    $open = '<span style="font-weight:bold;color:magenta;">';
    $close = '</span>';
    echo highlight_phrase($text, $highlight, $open, $close);
    // 第二引数には、ハイライト対象の文字列を指定します。

convert_accented_characters($str) 一番上に戻る

 英語にはないアクセント記号付きASCII文字を英字ASCII文字に変換します。
変換には「application/config/foreign_chars.php」で定義されている連想配列が利用されます。

    $str = ' Jānuārius Februārius Mārtius Aprīlis ';
    echo convert_accented_characters($str);
    // Januarius Februarius Martius Aprilis

word_wrap(($str, $charlim = '76') 一番上に戻る

 ワードラップ処理を行います。

 第一引数で指定されたテキストデータを第二引数で指定された文字数を目安に改行し直された
テキストデータを返します。

 PHPの「wordwrap」関数に下記の機能が追加されています。

    • 連続する複数のスペースを一つのスペースに変換します。
    • 改行文字「 \r\n 」と「 \r 」を「 \n 」に変換します。
    • {unwrap}と{/unwrap}で囲まれた文字列をワードラップ対象外にします。
    • 指定した文字列より長いURLはワードラップ対象外にします。

    $str = "CodeIgniter is a powerful PHP framework with a very small footprint, built
    for PHP coders who need a simple and elegant toolkit to create full-featured web
    applications. If you're a developer who lives in the real world of shared hosting
    accounts and clients with deadlines, {unwrap}and if you're tired of ponderously
    large and thoroughly undocumented frameworks{/unwrap}
    ";
    echo word_wrap($str, 50);
    /*
    CodeIgniter is a powerful PHP framework with a
    very small footprint, built for PHP coders who
    need a simple and elegant toolkit to create
    full-featured web applications. If you're a
    developer who lives in the real world of shared
    hosting accounts and clients with deadlines,
    and if you're tired of ponderously large and thoroughly undocumented frameworks
    */
*注: 日本語などのマルチバイト文字が含まれるテキストでは文字化けを起こします。
*注: 指定文字数を13文字以下にすると{unwrap} {/unwrap}が正しく処理されません。
*注: 指定文字数より長い単語がある場合、単語の途中で改行されてしまいます。

ellipsize($str, $max_length, $position = 1, $ellipsis = '&hellip;') 一番上に戻る

 テキストを省略文字を補う形で短縮します。

 第一引数に省略するテキストを指定します。

 第二引数に省略後の文字数を指定します。

 第三引数には省略文字列に置き換えるポジションを「0」から「1」の間の小数値で指定します。
 「0」を指定すると左端に省略文字を配置し、右端から第二引数に指定した文字数分を残した形で省略します。  「1」を指定すると右端に省略文字を配置し、左端から第二引数に指定した文字数分の文字を付加した形で省略します。  「0.5」を指定すると第二引数で指定した文字数の半数づつ右端、左端の文字列を残しその間に省略文字を配置した形で省略します。

 第四引数には、省略文字を指定します。デフォルトは「&hellip;」(…)です。

 例えば、100文字のテキストを第一引数に指定し、第二引数に「20」を指定し、第三引数に「0.2」を指定すると、 左端から4文字の後に省略文字を付加し、右端から16文字を省略文字の後に付加した形で省略します。  つまり、左端から5文字目から84文字目までが省略文字に置換されます。

    // 100文字
    $str = 'CodeIgniter is a powerful PHP framework with a very small footprint,'
         . ' built for PHP coders who need a';
    echo ellipsize($str, 20, 0.2);
    // Code…oders who need a