エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


SEO対策用タイトル、ディスクリプションの文字数カウントツール

      2014/08/19

SEO対策用タイトル文字数をカウントするツール

 

文字数カウンター、文字数チェッカー

 
このブログを書く際にタイトルやディスクリプション、概要の文字数をカウントするツールを作りましたので、そのご紹介です。
 
 
もともと、SEOをそれなりに気にしてタイトルを付けてはいましたが、最近はもっとしっかり対応した方がいいと思えてきまして、タイトルの文字数もカウントしながらつけるようになってきていました。
ですが、さすがに毎回毎回手でカウントしていくのには限界がありまして、やっぱり何かしら仕組みが必要だと思うに至ったのです。
 
もちろん文字数をカウントしてくれる Webツールはあちこちにありますので、わざわざ作るまでもないものではありますが、思わず作ってみたくなったという感じでしょうか。
 
とはいえ、文字数をカウントするだけのツールですので、原型を作るのにはほとんど時間はかかっていません。(細かな調整も含めると数時間ほどかかっていますが。)
 
 文字数カウントツール
 http://s-giken.info/count/char_count.php
 
 

mb_strlen関数を使うときの注意点

 
しかし、原型はあっさり出来上がったものの、文字数をカウントする mb_strlen関数がいまいち正確に動いていないように見えました。
 
いろいろ調べて見た結果、mb_strlen関数は、環境によって正確に動かない可能性があることが分かりましたので、併せてここに記録しておこうと思います。
 
 
具体的に、私のローカルの開発環境である XAMPP環境で下記を実行すると
 
——————

——————
 
で実行すると「63」という結果が返ってきました。
これは、バイト数をカウントする「strlen」と同じ結果でした。
 
おかしいですね。
 
 
これは、PHPの内部エンコーディングが文字列のエンコーディングと異なっている場合に mb_strlen関数は正常な値を返してくれない可能性があることに起因している不具合です。
 
そのため、現在の環境で不具合がなかったとしても、今後サーバ環境を移転したり、PHPのバージョンが上がったりすることで環境が変わった場合には不具合が起こる可能性もあることから、mb_strlenを始め、mb_*****系の関数は文字コードを指定して使用する方がよさそうです。
 
ここでは、プログラムファイル自体を UTF-8で作成していますので、第二引数として指定する文字コードも UTF-8で指定をします。
——————

——————
 
そうすると正確な「23」文字と出てきました。
 
 
また、UTF-8を間違って SJISを指定してしまうと「37」という結果が返ってきます。
 
ちなみに、この結果からもわかるように、全角文字を Shift-JISでは 2バイト、UTF-8では 3バイトとして扱っていることが分かりますね。
 
そんな記事は「日本語は2バイト文字?3バイト文字?」にも書いていますので、併せて読んでいただければ、と思います。

 - PHP・Smarty・ECCUBE

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

路線・駅検索をPHPで実装する方法解説。GoogleMapsの緯度経度から計算し検索
路線・駅検索をPHPで実装する方法解説。GoogleMapsの緯度経度から計算し検索

路線・駅検索の仕組みの構築は大変。登録する側も最寄り駅が多い場合は大変。なので簡易に実装するため緯度経度に基づき直線距離を計算する処理を考案して実装して、その処理を解説。

ECCUBE2.13.3で商品規格の在庫数が無制限から変更できないバグがある

2.13.3固有のバグである商品規格の在庫数の入力エリアがアクティブにならない不具合を解消する解説です。product_class.tplの2行を修正するだけの簡単対応です。

数値がMySQLのint(11)に保存できない!PHPの変数が本当にint型か確認!
数値がMySQLのint(11)に保存できない!PHPの変数が本当にint型か確認!

PHPでintegerとdoubleが混在するような計算をする場合は要注意!計算結果が整数値であっても途中で使用する変数にdoubleの値が入っているときは計算結果がintegerではない場合があります。

GMOペイメントゲートウェイのjava.io.IOExceptionのエラー

ECCUBEの決済でGMOペイメントゲートウェイのモジュールを使ってテスト決済を行った場合の不具合、java.io.IOExceptionと言うエラーの原因と対策方法の解説です。

PHPのスクレイピングライブラリ「PHP Simple HTML DOM Parser」の使い方
PHPのスクレイピングライブラリ「PHP Simple HTML DOM Parser」の使い方

PHPのスクレイピングライブラリ「PHP Simple HTML DOM Parser」の使い方を解説。要素を取得する方法、そこから属性を取得する方法を解説。また、マニュアルにはない注意点なども解説。

sleepの秒指定は整数のみなので1.5秒はsleep、usleepを組み合わせる
sleepの秒指定は整数のみなので1.5秒はsleep、usleepを組み合わせる

PHPのプログラム処理を遅延させる「sleep()」は整数秒単位。「usleep()」は1秒未満のマイクロ秒単位。では「1.5」秒はどう表現するのか。「sleep()」「usleep()」を組み合わせる。その解説。

QRコード(二次元バーコード)作成サービスを公開
QRコード(二次元バーコード)作成サービスを公開

QRコード(二次元バーコード)を生成するサービス。QRコードにする文字列を入力するだけで QRコードが簡単に作れる。オプションとして、画像サイズ、余白サイズ、エラー訂正レベルがある。

AdminerはphpMyAdmin代替のデータベース管理ツール

AdminerはphpMyAdminとほぼ同機能のデータベース管理ツール。PHP 1ファイルのため設置が非常に簡単で軽快に動作し、phpMyAdminの置き換えで使うのも問題なし。

ECCUBE mtb_constants initパラメータ設定の項目を追加する方法

ECCUBEのパラメータ設定で設定できる項目を追加する方法を説明します。

cURLを利用する際の注意点「&」があるURLは「"」で囲む
cURLを利用する際の注意点「&」があるURLは「」で囲む

cURLでURLはダブルクォーテーションで囲む。LinuxでもWindowsでもコマンドでは「&」は意味を持つ文字のためエラー原因になる。クォーテーションは常につけておく方が無難。