0

Word Press の投稿からタイトルをコードで取得して電子メールとして渡すと、句読点が少し壊れてしまいます。

たとえば、 として"TAMAGOTCHI P’S LOVE & MELODY SET"出てきます"TAMAGOTCHI P’S LOVE & MELODY SET"

これを防ぐ方法はありますか?

現在使用している特定のコードを確認する必要がある場合はお知らせください。(これが WordPress の問題なのか、PHP の問題なのか、よくわかりません。

編集 何が起こるかというと、このタイトルはクエリ文字列を介してフォームに渡されます。次に、フォームが送信されると、フォーム フィールドから文字列を取得してメールで送信します。

したがって、HTML をフォーム フィールドに渡す前、またはメールで送信する前に、HTML をデコードする必要があると思います。

EDIT 2 奇妙なので、コードを詳しく見て、値をフォームフィールドに渡す前にすでにurldecodeを実行しています

jQuery('#product_name').val("<?php echo urldecode(strip_tags($_GET['pname'])); ?>

シリアル化するときにデフォルトのエンコーディングが発生していますか(ajaxフォームハンドラーの場合)

    var dataString = $(this).serialize();

EDIT 3 OK は、コードがより複雑であることがわかります。タイトルは、フォームに到達する前に、ある種のワードプレス セッションにも渡されます。urldecode を配置する必要がある場所を正確に把握します。ありがとう!

4

2 に答える 2

1

これは、なくてもよい WordPress の「機能」の 1 つです。

これは、派手な引用符 (または他のエンティティ) を置き換えるためのダウンアンドダーティな方法の 1 つです。

$title = get_the_title( get_the_ID() );
$title = str_replace( '&#8217', "'", $title );
echo $title;

the_titleサイト全体でこれと同じ de-entities 機能が必要な場合は、にフックすることで、より深く統合できます。このコード ブロックは、テーマのfunctions.phpファイルに属します。

function reform_title($title, $id) {
    $title = str_replace( '&#8217', "'", $title );
    return $title;
}
add_filter('the_title', 'reform_title', 10, 2);
于 2013-02-14T16:51:55.843 に答える
0

wordpressについてはよくわかりませんが、問題自体は、テキストがUTF-8またはその他のエンコードではなくURLENCODEとして出力されることです。

2 つのオプションがあります

  1. テキストを受け取ったら、通常のエンコーディングに戻すことはありません (通常、$_GET または $_POST 変数にアクセスするときに php によってエンコードが解除されるため、これは奇妙です)。

  2. urlencode() 関数を使用してメッセージを解析しています。

于 2013-02-14T16:52:23.380 に答える