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

这是解决方案...

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

您可以直接在php代码中尝试implode直接输出数组:

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 回答
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 快速搜索了未终止的字符串文字,并得到了上面的 preg 替换语句。

谢谢

于 2012-08-28T12:42:29.453 回答