WordPressなどのツイートボタンでシェアする際に記事タイトルに@(アットマーク)が含まれる場合にエスケープする
ブログを書いていてシェアしたときに記事タイトルに @
が含まれていると その後に続く英数字 がリプライ扱いになってしまい、気になったので回避する方法を紹介します。
WordPress
<?php
$shareTitle = rawurlencode(get_the_title());
$shareURL = rawurlencode(get_permalink());
?>
<a href="//twitter.com/share?text=<?php echo $shareTitle ?>&url=<?php echo $shareURL ?>" target="_blank"></a>
WordPressでオリジナルシェアボタンを実装している場合、このように rawurlencode()
で記事タイトルと記事URLを エスケープ していると思います。

しかしこのままだとこのようにツイートしたときに、 @
以下の部分がリプライ扱いになってしまいます。
<?php
$shareTitle = rawurlencode(get_the_title());
$shareTitle = str_replace('%40', '@￰', $shareTitle);
$shareURL = rawurlencode(get_permalink());
?>
<a href="//twitter.com/share?text=<?php echo $shareTitle; ?>&url=<?php echo $shareURL; ?>" target="_blank"></a>
そこで、 rawurlencode()
でエンコードした後に str_replace
で %40
(エンコードされた
@
)を @￰
に置換しています。 ￰
は文字コードとして存在しますが、 実際には見えない 文字です。

これで無理矢理ですがエスケープすることができます。
コピペ用
@a
a の部分は消して別の文字などに変更して使うことができます。
CSS本執筆しました!!!
CSS本出します!1/29発売予定
— たかもそ@CSS本1/29発売!! (@takamosoo) 2018年12月31日
自分がCSS学びたての頃にもっとはやく知りたかったテクニックを載せています。CSSの基礎知識について解説していないので、中級者〜向けとなります。CSS入門書を読んではみたものの、思い通りに作れない人にオススメです。
よろしくお願いします。https://t.co/fkz1dM03Pj pic.twitter.com/suYyaPqwIs