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]にメールを送ってください。