[PHP] 文字列 切って マルズルイムピョ 付ける 関数
function text_dot($text, $len){ $text = strip_tags($text); if(strlen($text)<=$len) { return $text; } else { $text = htmlspecialchars_decode($text); $text = mb_strcut($text, 0, $len, 'utf-8'); $text = htmlspecialchars($text); return $text."…"; } }
上 関数を 使えば 字を 切った 後 マルズルイムピョを 付ける.
特徴1 – htmlspecialchars_decode
関数
一応 htmlspecialchars_decode
関数を 使った.
HTMLで <私>を 表現しようとすれば < おこるが > ような 形態で 使って 与えると する.私>
定木, <ハンギョレ> という 文字列が あると 思って 見よう. 前から 7バイトを 切ると 思おう. それでは ‘<ハンギョ’ と 出る のだと 思う のだ. しかし ない. 関数は たぶん ‘<たいてい’ 万 リターンする のだ. (UTF-8仕事 時 英文は 1バイト, ハングルは 3バイト 処理される.)ハンギョレ>
すなわち, HTMLで 使う 特殊文字の 文字列が 切られる 場合を 念頭に 置くと する のだ.
そのため DB あぶ 保存された 文字列 形態である ‘<ハンギョレ>’を `htmlspecialchars_decode()` を 利用して ‘<ハンギョレ>’路 作った 次 文字列を 切る のだ.ハンギョレ>ハンギョレ>
特徴2 -mb_strcut
関数
普通 文字列を 切る 時 substr
を 使う ことだ. しかし これは アルファベットに 最適化された やつだ. これで ハングルを 切れば 字が 割れる 場合が 生ずる.
そのため mb_strcut
おこるが mb_substr
という 関数が 鳥で 出た. (鳥で 出たとしても もう PHP4.0.6 から あった の ようだ;; これ 二 関数は 違う 方法で ような 役目を 遂行する. 団, mb_substr銀 因子値で 1これ 字詰めで, mb_strcut銀 バイト数だ.)これら 関数の mb増えた multi-byte義 弱者だ.
これ 関数を 使えば ハングルも 割れるの なくて 寝る 切られる.
例題
下と 一緒に test.php なんかの ファイルを 作って 行って 見れば 関数を 寝る 理解する 数 ある のだ.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <? $str="abcわ!!!"; echo "元々 文字列: $str <br/>"; $after_substr4=substr($str,0,4); $after_substr5=substr($str,0,5); $after_substr6=substr($str,0,6); $after_substr7=substr($str,0,7); $after_substr8=substr($str,0,8); $after_substr9=substr($str,0,9); echo "after substr 4: $after_substr4 <br/>"; echo "after substr 5: $after_substr5 <br/>"; echo "after substr 6: $after_substr6 <br/>"; echo "after substr 7: $after_substr7 <br/>"; echo "after substr 8: $after_substr8 <br/>"; echo "after substr 9: $after_substr9 <br/>"; $after_mb_strcut4 = mb_strcut($str,0,4, "UTF-8" ); $after_mb_strcut5 = mb_strcut($str,0,5, "UTF-8" ); $after_mb_strcut6 = mb_strcut($str,0,6, "UTF-8" ); $after_mb_strcut7 = mb_strcut($str,0,7, "UTF-8" ); $after_mb_strcut8 = mb_strcut($str,0,8, "UTF-8" ); $after_mb_strcut9 = mb_strcut($str,0,9, "UTF-8" ); echo "after mb_strcut 4: $after_mb_strcut4 <br/>"; echo "after mb_strcut 5: $after_mb_strcut5 <br/>"; echo "after mb_strcut 6: $after_mb_strcut6 <br/>"; echo "after mb_strcut 7: $after_mb_strcut7 <br/>"; echo "after mb_strcut 8: $after_mb_strcut8 <br/>"; echo "after mb_strcut 9: $after_mb_strcut9 <br/>"; /*結果 - 元々 文字列: abcわ!!! after substr 4: abc after substr 5: abc after substr 6: abcわ after substr 7: abcわ! after substr 8: abcわ!! after substr 9: abcわ!!! after mb_strcut 4: abc after mb_strcut 5: abc after mb_strcut 6: abcわ after mb_strcut 7: abcわ! after mb_strcut 8: abcわ!! after mb_strcut 9: abcわ!!! */ ?>
substr
路 4バイトや 5バイトを 切った 時 ハングルが 割れる のを 卵 数 ある. 特殊文字と 英文は 1バイト, ハングルは 3バイト 処理されるという のも 卵 数 ある.
- コメント機能はありません。コメントの代わりに[email protected]
にメールを送ってください。