0

PHP の addlashes 関数を使用して二重引用符をエスケープするのに苦労しています。私が実行した場合:

$name = addslashes(get_the_title());

タイトルには二重引用符が含まれていますが、出力にはエスケープ文字のない二重引用符が含まれています。

例えば。「多様性を歓迎する」移民フォーラム

Wordpress データを .ICS ファイル ジェネレーターに挿入しようとしていますが、Wordpress データを ICS 形式と連携する形式に正しく解析する方法が見つかりません。

解決策: 私の解決策は、代わりに $post->post_title を使用して、Wordpress 関数 get_the_title() をバイパスすることでした。切り替えると、エスケープはaddslashesで適切に機能しました。

4

3 に答える 3

0

引用符がエスケープされていない場合、それらは真の二重引用符ではありません。文字列がマルチバイト文字セットであるか、「派手な引用符」である可能性があります。

この関数はしばしばこれを整理します:

function convert_fancy_quotes ($str) {
  return str_replace(array(chr(145),chr(146),chr(147),chr(148),chr(151)),array("'","'",'"','"','-'),$str);
}

だから試してみてください:

$name = addslashes(convert_fancy_quotes(get_the_title()));

...これが問題である場合でも、結果で何をしているのかによっては、とにかくエスケープする必要はないでしょう。

于 2012-01-19T17:17:12.503 に答える
0

おそらくトリムが役立ちます(通常の引用符をエスケープするため):

$name = addslashes(trim(get_the_title(), '"'));

他の種類の引用符については、正規表現を使用してみてください。何かのようなもの:

$title = preg_replace("/[\'\"\”\“]+/";, '', get_the_title());
$name = addslashes($title);
于 2012-01-19T17:06:39.633 に答える
0

カーリー引用符は間違いなくチェックするものです。また、送信先の関数の予想される入力を確認することもできます。addslashes() 関数は間違いなくエスケープ文字を追加しますが、その出力をそれらを削除する別の関数に送信している場合、スラッシュがエスケープされていないように見える可能性があります。

于 2012-01-19T17:26:37.680 に答える