【问题标题】:SyntaxError: unterminated string literal in PHP variableSyntaxError:PHP 变量中未终止的字符串文字
【发布时间】:2017-05-12 08:32:20
【问题描述】:

我搜索了许多关于“未终止的字符串文字”语法错误的问题,但没有发现任何帮助我...

所以,我有这个 Javascript 函数:

function parametresModal($parametres) {
        document.getElementById('remodalTest').innerHTML = $parametres;
};

然后我在页面中的链接上调用此函数:

<a href="#" onClick='parametresModal("<?php the_field('description-defi'); ?>");'>TEST</a>

这里写的参数是简化的;我实际上想添加这个 Wordpress ACF 的功能以及 HTML 标记,但我发现这个特定字段出现了问题(见下文)。

这个“parametresModal”函数应该用它的参数填充下面的div:

<div id="remodalTest">MyDiv</div>

问题是控制台输出

“语法错误:未终止的字符串文字”

Wordpress ACF 的“description-defi”字段包含几行带有一些简单引号的文本(例如 c'est、l'éviter、... )。 所以我尝试用几种方法来转义引号:

$myField = the_field('description-defi');
$myEscape = json_encode($myField);

$myField = the_field('description-defi');
$myEscape = addshlashes($myField);

$myField = the_field('description-defi');
$myEscape = htmlspecialchars($myField);

总是导致同样的错误。

您是否看到我的代码或思考问题的方式可能出错的地方?

非常感谢!

【问题讨论】:

  • @FetraR。根据文档the_field() 等于echo get_field()
  • @FetraR。这实际上就是他现在正在做的事情

标签: javascript php


【解决方案1】:

the_field() 将输出所选字段的内容。如果你想使用一个字段,你应该改用get_field()

见:https://www.advancedcustomfields.com/resources/the_field/

也不会由php的任何逃生功能逃脱新线字符,如果您的字符串包含newlines,则需要使用类似的内容手动逃脱它们: $myField = str_replace(array("\r\n", "\n"), "&lt;br&gt;", $myField);

如果您知道您的数据库将始终使用相同的换行符序列,则可以将 array("\r\n", "\n") 替换为该换行符序列。

【讨论】:

  • 您好,谢谢您的回答。我已经尝试使用 $myField = get_field('description-defi'); 并转义 $myField,但我得到了同样的错误。
  • (当我谈到转义 $myField 时,我的意思是使用问题中描述的相同“方法”:htmlspecialchars、json_encode 和 addlashes)
  • 也尝试$myField = str_replace(array("\r\n", "\n"), "&lt;br&gt;", $myField);,因为根据文档,PHP 的转义函数都没有转义换行符。
  • 太好了,它有效!非常感谢 ! (您想将此作为答案发布,以便我接受吗?;))
  • 编辑了我的答案:)
猜你喜欢
  • 1970-01-01
  • 2011-04-27
  • 1970-01-01
  • 2013-10-16
  • 2014-06-09
  • 2014-06-14
  • 1970-01-01
相关资源
最近更新 更多