当前位置:  开发笔记 > 编程语言 > 正文

将PHP字符串传递给JavaScript变量(并转义换行符)

如何解决《将PHP字符串传递给JavaScript变量(并转义换行符)》经验,为你挑选了7个好方法。

编码PHP字符串以输出到JavaScript变量的最简单方法是什么?

我有一个PHP字符串,其中包括引号和换行符.我需要将此字符串的内容放入JavaScript变量中.

通常,我只是在PHP文件中构建我的JavaScript,àla:


但是,当$myVarValue包含引号或换行符时,这不起作用.



1> bobwienholt..:

扩展别人的答案:


使用json_encode()需要:

PHP 5.2.0或更高版本

$myVarValue 编码为UTF-8(当然还有US-ASCII)

由于UTF-8支持完整的Unicode,因此动态转换应该是安全的.

请注意,因为json_encode转义正斜杠,即使包含的字符串也会安全地转义,以便使用脚本块进行打印.


如果你使用UTF-8那是迄今为止最好的解决方案.
重要的是json_encode的实现会转义正斜杠.如果没有,如果$ myVarValue为"",则无效.但json_encode确实逃脱了正斜线,所以我们很好.
请注意,如果在`onclick`属性等中使用它,则需要将`json_encode`的结果传递给`htmlspecialchars`,如下所示:`htmlspecialchars(json_encode($ string),ENT_QUOTES,'utf-8 ')`或者你可能会遇到问题,例如``&bar;`在`foo()&& bar;`被解释为HTML实体.

2> Javier..:

用JSON编码


@nir:一方面,我不知道有什么理由使用任何其他编码,另一方面,完整的JSON编码器也管理任何所需的字符集转换

3> micahwittman..:
function escapeJavaScriptText($string)
{
    return str_replace("\n", '\n', str_replace('"', '\"', addcslashes(str_replace("\r", '', (string)$string), "\0..\37'\\")));
}



4> pr1001..:

我遇到过类似的问题,并了解以下是最佳解决方案:


但是,micahwittman发布的链接表明存在一些较小的编码差异.PHP的rawurlencode()功能应该符合RFC 1738,而Javascript似乎没有这样的努力decodeURIComponent().



5> giraff..:

偏执狂版本:逃避每一个角色.

function javascript_escape($str) {
  $new_str = '';

  $str_len = strlen($str);
  for($i = 0; $i < $str_len; $i++) {
    $new_str .= '\\x' . sprintf('%02x', ord(substr($str, $i, 1)));
  }

  return $new_str;
}

编辑:json_encode()可能不合适的原因是,有时,您需要阻止"生成,例如



6> Kld..:

要么




7> 小智..:

下面的Micah解决方案为我工作,因为我必须自定义的站点不在UTF-8中,因此我无法使用json;我会投票赞成,但我的代表不够高。

function escapeJavaScriptText($string) 
{ 
    return str_replace("\n", '\n', str_replace('"', '\"', addcslashes(str_replace("\r", '', (string)$string), "\0..\37'\\"))); 
} 

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有