Twitter 日本語投稿時の文字数・バイト数チェック
何度か、最大文字数を超えて、投稿エラーとなりました。
Twitterの文字数制限は、欧米のアルファベットユーザー対象に140文字から280文字となった経緯があります。
ただし、マルチバイト文字(日本など)向けのユーザーは、140文字の文字数制限のままでした。
実際には、半角文字と全角文字を組み合わせると、140文字以上の文字数が投稿出来たりできておりました。とりあえず、バイト数を数えて、280文字で投稿していたのですが、上手く行かないケースが多々ありました。
以下サイトを見て、最大文字数の確認方法を変更しました。
- 利用したいハッシュタグを配列登録 (ランダムで選択)
- 280文字対応 (以前は、280バイト前後で考えていた)
$max_char = 280 + $url_char - 11.5;
URLは一律11.5文字でカウント
投稿文全体で、280としておけば間違いないと思います。
mb_strwidth($tweet_text) < $max_char
- ハッシュタグの「ー(ハイフン)」を「_(アンダースコアー)」へ
- URL1件投稿時の最大文字数対応(必要に応じてハッシュタグ部分を削減で対応)
文字数のカウントは、mb_strwidthを利用します。
mb_strwidth:半角文字は 1 として、 全角文字は 2 として数えます。
strlen 関数は単純にバイト数、mb_strlen 関数は半角・全角関わらず1文字とカウント、Twitterの特殊ルールに合わせるなら、 mb_strwidth を使うのが確実です。
Twitterへアプリ登録
(PHPから実行時に必要となる、API Key、API Secret Key、Access Token、Access Token Secretの取得を行います)
PHPからTwitterへの操作は、TwitterOAuthというライブラリを用います。
- Twitterへの開発者登録とApp登録
- TwitterOAuth導入
Twitterへの開発者登録とApp登録
Twitterの以下のURLへアクセスし、登録をすすめます。
- Twitter App https://apps.twitter.com/
上のURLよりサービスにログインします。
ログイン後の画面です。右上の「Create an app」をクリックします。
「Create an app」を押すと、最初に開発者アカウントへの登録へ誘導されます。
一番の開発理由を聞かれます。「Professional」これは通常ビジネス目的、「Hobbyist」趣味なので、個人利用は通常このカテゴリとおもいます。
今回は、API経由でTweet・Postを行いたいので、Making a botを選択しました。BOTの作成。
アカウント情報の確認をされました。通常問題ないと思います。
1,居住国、2.呼び名を聞かれました。それぞれ、Japanと「(適当に)mikiie」と登録しました。
アプリの説明をフリーフォーマットで記載しました。
WEB翻訳などで準備した内容を貼り付ければOKです。
追加の質問事項に回答します。
Twitter情報を分析Analyzeするか? Tweet,Retweet, Like, Followなどを実施するか?
また、フリーフォーマットで、開発対象の機能内容の記載が必要でした。
これまでに記載や選択した内容のサマリ画面が表示され、間違いがないか確認を行い、「Looks good!」を選択します。
最後に利用規約に同意し、Submit Application(申請を送信)すると、利用申請の結果がメールで届きます。
利用申請後に着信した利用申請結果メールのリンクよりアクセスすると、Welcome画面が表示されます。
開発登録者完了後に、Create an appを実施するとアプリの作成が行えます。
コールバックURLを登録する必要がありまうが、PHPが動作するサーバで問題ないとおもますので、http://127.0.0.1/と登録しておけば問題ないです。
最後に、Keys and TokensでアプリのAPI Keysを取得します。
(API Key、API Secret Key、Access Token、Access Token Secretの取得を行います)
PHPからTwitterに投稿 TwitterOAuth導入
V1.1 Source code (tar.gz)
TwitterOAuthをダウンロードし、PHPを利用したいサーバに配置します。
- ライブラリのダウンロード
- tar.gzの解凍
- フォルダ名の変更
$ curl -OL https://github.com/abraham/twitteroauth/archive/1.0.1.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 127 0 127 0 0 285 0 --:--:-- --:--:-- --:--:-- 294 100 714k 0 714k 0 0 475k 0 --:--:-- 0:00:01 --:--:-- 1674k $ tar -zxvf 1.0.1.tar.gz $ mv twitteroauth-1.0.1/ twitteroauth/
以下、一番簡単なサンプルPHPです。
<?php require "twitteroauth/autoload.php"; use Abraham\TwitterOAuth\TwitterOAuth; $consumerKey = "your consumer key"; $consumerSecret = "your consumer secret"; $accessToken = "your access token"; $accessTokenSecret = "your access token secret"; $twitter = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret); $result = $twitter->post( "statuses/update", array("status" => "Tweetテスト") ); if($twitter->getLastHttpCode() == 200) { print "tweeted\n"; } else { print "tweet failed\n"; }