4

Web サイトの og:title タグに少し苦労しています。記事のタイトルにアポストロフィが含まれていて Facebook で共有される'と、アポストロフィの代わりに が表示されます。自分のメタ タグを友人のサイトと比較したところ、友人のアポストロフィが正常に表示されましたが、見つけた唯一の違いは次のとおりです。

私のサイトの og:title に配置されたアポストロフィのコード: '

友人のサイトの og:title に配置されたアポストロフィのコード: '

私のサイトは、アポストロフィを変換した後にアンパサンドを変換していると思います。これ'により、Facebook のように表示されます。

私は Joomla! に K2 を使用しており、フォーラムでこの質問をしましたが、5 日経っても返事がありません。

これは、com_k2>views>item>view.html.php ファイルで見つけたコードです。

$document->setMetaData('og:title', htmlspecialchars($document->getTitle(), ENT_QUOTES,  'UTF-8'));

私は PHP に精通していません。これを変更して、コードが正しく表示されるようにする方法はありますか? 参考になる場合は、サイトのタイトルにアポストロフィが含まれる記事へのリンクを次に示します。

お時間をいただきありがとうございます。

4

1 に答える 1

3

htmlspecialchars のドキュメントを参照し、単一引用符 (アポストロフィとして使用されることが多い) をいつ変換するかについての説明を参照してください。が設定されていて、htmlspecialchars の呼び出しでENT_QUOTES設定されている場合にのみ、単一引用符をエンコードします。ENT_QUOTES

単一引用符をエンコードしたくない場合は、そのフラグの使用をやめてENT_COMPAT(単一引用符ではなく二重引用符をエンコードする) に切り替えるだけで、ステートメントは次のようになります。

$document->setMetaData('og:title',
        htmlspecialchars($document->getTitle(),
        ENT_COMPAT,  'UTF-8'));

(このページでは読みやすいように改行を追加しましたが、実際のコードには改行を追加しないでください。)

また、htmlspecialchars にはdouble_encodeという最後のオプション パラメータ (PHP 5.2.3 で追加) があることにも注意してください。デフォルトはtrueですが、このパラメータを に設定するとfalse、PHP は既存のエンティティをエンコードしません。そのため、単一引用符をエンコードしたとしても、htmlspecialchars をさらに呼び出しても、結果'は にさらにエンコードされず、 のままになります。''

于 2013-05-06T18:27:10.360 に答える