2

セッションを介してページに渡された配列があります。

Array(
[0] => Somewhere
Belfast
[1] => New York
)

次に、データは JS 変数に収集されます。

var json_university_addresses = '<?php echo (Session::get('university_address'))?>';

JS 配列に分割される前に:

var aUniversityAddresses = json_university_addresses.split(',');

私が得ている問題は、「どこか」と「ベルファスト」の間の改行です。これにより、ページが失敗します。

これを簡単にするために、データの両側でできることはありますか? ユーザーに改行を表示したい。

ありがとう

4

6 に答える 6

5

使用する方が良い(読む:簡単)のではないjson_encodeでしょうか?次に、クライアント側でフォーマットできます。

于 2012-08-28T12:03:49.217 に答える
0

javascriptにデータを出力する前に、まず改行文字をエスケープする必要があります。

$txt = str_replace( array( "\n", "\r" ), array( "\\n", "\\r" ), $txt);

このようにすると、最終的なコードは次のようになります。

$universities = Session::get('university_address');
$universities_string = implode(',', $universities);
$universities_js = str_replace( array( "\n", "\r" ), array( "\\n", "\\r" ), $universities_string);

そして、javascriptファイルで:

var json_university_addresses = "<?php echo $universities_js ?>";
于 2012-08-28T12:41:15.223 に答える
0

わかりました、私は何とか私が欲しいものを手に入れることができました:

var json_university_addresses = '<?php echo (Session::has('university_address')) ? preg_replace('/[\r\n]+/', "\\n",addslashes(implode(',',Session::get('university_address')) )) : "" ?>';

助けてくれてありがとう。ここでJSONを使用して終了していない文字列リテラルをすばやく検索し、上記のpregreplaceステートメントを取得しました。

ありがとう

于 2012-08-28T12:42:29.453 に答える
0

これが解決策です...

<?php
    $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
    echo json_encode($arr);
 ?>
于 2012-08-28T12:05:18.723 に答える
0

implode配列を直接出力するには、php コードで直接試すことができます。

var aUniversityAddresses = [<?php echo implode(",", Session::get('university_address'))?>];

http://php.net/manual/en/function.implode.php

于 2012-08-28T12:07:03.077 に答える
0

改行はphp配列にあると思うので、最初にセッション配列からそれらを削除してから、スクリプトで使用する必要があります

$sesion_array=Session::get('university_address');

$sesion_array=array_filter($sesion_array,'myFunction');

function myFunction($elem)
{
  return str_replace("\n","&nbsp;",$elem); 
}

それから試してください

var json_university_addresses = '<?php echo $sesion_array ?>';
于 2012-08-28T13:12:09.630 に答える