0

URL (キー、値) を介してカンマ区切りの値を送信しています。それらを Javascript の escape() でエンコードし、各値内のコンマを %2c に置き換えています。問題は、エンコードされたコンマが PHP の最後で "," に変換されてから、explode() が実行されると、コンマを含む文字列が分割され、正しく保存されないことです。

PHP がエンコードされたビットをエンコードされていないビットに変換するのを止めるにはどうすればよいですか?

各入力の私の JS は次のとおりです。

fieldData += $(this).attr("id")+","+escape($(this).html()).replace(/,/g,"%2c")+",";

私のPHPは:

$fieldData = explode(",", $_POST['fieldData']);

試した(他のものと一緒に):

$fieldData = explode(",", urlencode($_POST['fieldData']));
4

2 に答える 2

1

これには base64encode/decode を使用することをお勧めします。

JavaScript は次のようになります: http://jsfiddle.net/Y6yuN/

<script src='http://javascriptbase64.googlecode.com/svn/trunk/base64.js'></script>
fieldData += $(this).attr("id")+","+escape(Base64.encode($(this).html()))+",";

エスケープは末尾の = 用です

したがって、コンマで区切られた base64 でエンコードされた文字列になります。

PHP 側:

$fieldData = explode(",", $_POST['fieldData']);
foreach ($fieldData as $k => $v){
  $fieldData[$k] = base64_decode(urldecode($v));
}
于 2013-01-30T17:32:23.470 に答える
0

あなたの投稿はあまり説明されていませんが、JS によって渡されたデータをデコードしたいと思います。したがって、コードは次のようになります。

$fieldData = explode(",", urldecode($_POST['fieldData']));

私が間違っている場合は、より良いものを書いてみてください!

于 2013-01-30T16:46:06.257 に答える