web関連

【php】phpで文字数抜粋したい

【php】phpで文字数抜粋したい

rssで外部サイトの記事を引っ張って、記事タイトルをphpで抜粋した時の備忘録
※rssで記事を引っ張ってくるコードは書いてないです

「mb_substr()」を使って文字数抜粋

<?php 
$title = 'hereに抜粋シタイtextや変数が入るよ';// 抜粋したい文字
$num = 10;//抜粋したい文字数
if(mb_strlen($title) < $num){
  //指定した文字数以下だったらそのまま出力
   echo $title;
}else{
  //指定した文字数以上だったら抜粋して「…」を後ろにつける
  echo mb_substr($title, 0, $num, 'UTF-8');
  echo '…';
}
?>

出力結果:
hereに抜粋シタイ…

上手く抜粋できた

「mb_strimwidth」を使って文字数抜粋

「mb_strimwidth」を使った方がいいという記事を見たんだけど日本語はマルチバイト文字列なんで1文字ではなく2文字計算されてしまって上手く抜粋できなかった

<?php 
echo mb_strimwidth('hereに抜粋シタイtextや変数が入るよ', 0, 10, '…', 'UTF-8'); 
?>

出力結果:
hereに抜…

10文字抜粋したかったのに6文字しか抜粋できなかった
しかも「…」もカウントされるから実際9文字分しか抜粋されない

英語なんかだと1文字計算だから文字計算楽なんかな?外人に聞いてみたい