No.5727
ただし、賞味期限は2025年1月。┌(:3」└)┐ >>4991
🍬Re:5725◆URLの中に & 記号をそのままを書くと、それはパラメータの区切りであると認識されてしまいます。「&以降の文字がTwitter側で表示されない」という現象の原因はそれです。
▼背景:
例えば、Web上のシステムに何らかのパラメータを送る場合、
https://example.com/?url=AAA&title=BBB&text=CCC&name=DDD
のような感じで「パラメータ=値」のセットを「 & 」で連結しますよね。上記の場合は、
- urlパラメータの値がAAA
- titleパラメータの値がBBB
- textパラメータの値がCCC
- nameパラメータの値がDDD
もしここで、「BBB」の部分を「Baa&Bee」のように「 & 」記号を含む形で書いてしまうと、
https://example.com/?url=AAA&title=Baa&Bee&text=CCC&name=DDD
これは以下のように、
- urlパラメータの値がAAA
- titleパラメータの値がBaa (←&記号の直前まで)
- Beeパラメータ(値なし) (←&記号の直後から)
- textパラメータの値がCCC
- nameパラメータの値がDDD
半角の「 & 」記号があれば常にパラメータの区切りになるからです。
本当は「Baa&Bee」というタイトルなのに「&」がパラメータの区切りだと認識されるため、タイトルの認識範囲は「Baa」で終わってしまうわけですね。「&に続くその先の文字がTwitterでタイトルとして認識されない」のもこのためです。
(※ここでは & を文字実体参照にして Baa&Bee としていても同じことで、やはりこの & は区切りになります。)
▼対処方法:
URLの中に「 & 」記号そのものを文字として含めたい場合には、URLエンコードという規則に従って & 1文字を %26 という3文字に置き換える必要があります。
先の例だと、
https://example.com/?url=AAA&title=Baa%26Bee&text=CCC&name=DDD
……のようにします。そうすれば、「Baa%26Bee」が「Baa&Bee」にデコード(復元)されて、
- titleパラメータの値はBaa&Bee
このような変換はJavaScript側でするしかありませんから(JavaScriptにはそのための関数 encodeURIComponent が用意されています)、てがろぐ側の本文([[COMMENT:TITLE]]等)を取得してURLエンコードしてから「Twitterへ送るURL」を生成するようなJavaScriptを用意する必要があるでしょう。
※なお、<![CDATA[で始まり]]>で終わるCDATA(読みはたぶんシー・データ)はXMLでの特別な書き方なので、HTMLには無関係です。畳む
- ユーザ「にしし」の投稿だけを見る (※時系列順で見る)
- この投稿と同じカテゴリに属する投稿:
- この投稿日時に関連する投稿:
- この投稿に隣接する前後3件ずつをまとめて見る
- この投稿を再編集または削除する





