0

私は自分のウェブサイトで Facebook 共有リンクを使用して、Facebook で記事を公開しています。

一部のリンクでは機能し、他のリンクでは機能しません。リンクを介して渡されるタイトルとテキストはフランス語 (多くの引用符と特殊文字) であり、リンクを扱うページは UTF8 です。

コンテンツを urlencode してリンクを作成する前に「mysql_real_escape_string」を使用するだけで、すべての FB リンクを機能させることに成功しました。

なぜ「mysql_real_escape_string」なのですか?

「htmlentities」、「htmlspecialchars」、および「addslashes」が機能しなかったため、これはテストでした。明らかな欠点は、「mysql_real_escape_string」関数はデータベースとは関係がないため、そこでは何もしないことです。実際、この機能は「ユーザーに対して拒否されました...」というエラーメッセージが表示されます。

とにかく、私はこの機能を使用する予定はありませんが、「addslashes」は機能しないのに、Facebook 共有リンクが 100% 機能するというのは奇妙なことです。私は、addslashes は "mysql_real_escape_string" の純粋な PHP バージョンだと思っていましたが、何か違うところがあります。

私の問題に対する純粋なPHP代替ソリューションはありますか?

4

1 に答える 1

1

URL エンコードはRFC 1738標準に基づいてい ます。URL エンコーディングの現在の標準は に変更されました。RFC 3986。必要な関数はrawurlencode($string); です。または自分で関数を書きます。置換する文字は、「!」、「*」、「'」、「(」、「)」、「;」、「:」、「@」、「&」、「=」、「+」です。 "、"$"、","、"/"、"?"、"%"、"#"、"["、"]"

于 2014-12-16T15:00:17.040 に答える