はじめに
Twitter APIでツイートを取得すると、text(ツイート本文)に中途半端なエスケープが入ります。
2022年現在、エスケープされる文字は以下の3つが確認されています。
-
<
→<
-
>
→>
-
&
→&
'(シングルクオート)や`(バッククオート)などは対象ではないようです。
正直、フロントエンドで見せるときにこっちでうまいことエスケープするので、いらんことするなって感じです。
したがって、Twitter APIから取得したtextを生データに戻す関数を作りました。
TypeScriptです。
コード
引数(text)にTwitter APIから受け取ったtextを渡すと、生データにデコードして返してくれます。
const decode = (text: string) => {
return text
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/&/g, "&");
};
コードの解説
現状、TypeScriptだとreplaceAll
関数が使えないので、replace
関数に正規表現を渡してます。
受け取ったtextからエスケープされた文字列を探索して全て元の文字に変換して返却しています。
まとめ
2022年現在のTwitter APIのエスケープに対応する方法でした。
ただ、今後Twitter APIの仕様変更がないとは限らないので、定期的にチェックする必要があるのかな…と思っています。
(素直に生データ返してくれ…)
もっと良さそうな方法とかあれば、コメントで教えてください〜