META描述和Facebook

问题描述:

这是我的动态标题和元描述更新代码;META描述和Facebook

$titlecek=mysql_query("SELECT bahisisim,bahisiaciklama,URL FROM bahis WHERE id='$bahisid'"); 
$titlecekx=mysql_fetch_array($titlecek); 
echo "<title>" . mb_strtolower($titlecekx[0],'UTF-8') . "</title>"; 
echo '<META NAME="Description" CONTENT="' . mb_strtolower($titlecekx[1],'UTF-8') . '">'; 

但是,当我试图在Facebook上分享我的网页时,它看起来像;

http://666kb.com/i/c6st3ke4u4hqaem42.gif

通过它的HTML代码像在这些输出的方式;

<title>bu bahise gelen evet says tek say olacak</title><META NAME="Description" CONTENT="bu bahise 2 gün içerisinde gelen evet oyu sayısı tek sayı olacak. (ilkokullu editi: 2'nin katları çift sayıdır, 0 çift sayıdır)"> 

我该如何解决这个问题?

+0

确保您的HTML页面的字符集设置为UTF-8。 –

确保您知道网站使用的是什么字符编码。否则,即使您正确输出UTF-8格式的值,消费者(本例中为Facebook)也不会知道在读取数据时使用的编码。要做到这一点

一种方法是使用这样的:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

在HTML5中,you can also say

<meta charset="UTF-8" /> 

每当您更改元标记时,您都必须通过Facebook Debugger运行您的网址,以确保Facebook放弃它的元标记的缓存版本。

Facebook Open Graph Protocol documentation采取了“编辑Meta标签”部分 -

对于变化反映在Facebook上,你必须迫使你的页面被刮掉。当页面的管理员点击Like按钮或当URL输入Facebook URL时,该页面被刮掉 Linter调试器。

+1

如果您不使用调试器,缓存将在24小时内过期。 – ceejayoz

+0

@cee - 太好了!尽管在更改meta标签时,通常应该测试这些东西,而不是简单地等待缓存过期...他们给了我们一个很棒的工具(调试器),所以我们应该利用它:) – Lix

最终的解决方案;

$turkceler= array("ç", "ğ" , "ı", "ö", "ş", "ü"); 
$degistir= array("&#231", "&#287", "&#305", "&#246", "&#351", "&#252"); 
echo "<title>" . str_replace($turkceler,$degistir,mb_strtolower($titlecekx[0])) . "</title>"; 
echo '<META NAME="Description" property="og:description" CONTENT="' . substr(strip_tags(str_replace($turkceler,$degistir,mb_strtolower($titlecekx[1]))),0,200) . "..." . '">'; 
echo '<meta property="og:image" content="' . $titlecekx[2] . '"/>';