1

请不要将此标记为重复,因为我在非常相似的问题上找不到有效的解决方案。他们似乎都没有修复我的特定字符串。

我有这个 PHP 变量...

<?php

   $og_description = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus hendrerit cursus mi, Nullam condi\'mentum posuere odio sed cursus.. Proin posue\'re fermentum, ligula vel lacinia sollicitudin, libero quam ultrices quam, quis tristique orci... enim a justo!'

?>

上面的字符串与我使用的特殊字符完全相同。

然后我试图将它回显到这个 onclick 标识符中。显然<?php echo $og_description; ?>不会单独工作。

<a href="#" onclick="fb_publish('<?php echo $fb_app_url; ?>','<?php echo $og_title; ?>','images/icon.png','<?php echo $og_description; ?>'); return false;">Post to wall</a>

这些我都试过了...

echo htmlspecialchars($og_description);
echo json_encode($og_description);

和其他一些人,但似乎没有任何东西可以将我的字符串修复为不会破坏标识符数组的格式。

有谁知道我该如何解决这个问题?

谢谢乔什

4

3 回答 3

2

我不建议使用内联 JavaScript,但这是一种方法:

$anchor_fmt = '<a href="#" onclick="fb_publish.apply(window, %s);return false;">Post to wall</a>';
$js_args = array(
    $fb_app_url, 
    $og_title, 
    'images/icon.png', 
    $og_description
);
echo sprintf($anchor_fmt, 
   htmlspecialchars(json_encode($js_args), ENT_QUOTES, 'UTF-8')
);

它用于json_encode()形成一个数组,该数组使用.apply(). 最后,您需要确保生成的字符串在 HTML 上下文中仍然有效。

顺便说一句,它可以完全写在一行中,但为了便于阅读,我将其拆分。

于 2013-05-20T10:16:33.247 回答
1
onclick="fb_publish(<?php echo htmlspecialchars(json_encode($string), ENT_COMPAT); ?>)"

您需要将转义/编码为有效的 Javascript 语法,然后将其转义/编码为有效的 HTML 属性。

于 2013-05-20T10:15:59.440 回答
0

您可以先分配给 js 变量:

<script>
var fb_app_url = <?php echo json_encode($fb_app_url); ?>;
var og_title = <?php echo json_encode($og_title); ?>;
var og_description = <?php echo json_encode($og_description); ?>;
</script>

<a href="#" onclick="fb_publish(fb_app_url,og_title,'images/icon.png',og_description); return false;">Post to wall</a>
于 2013-05-20T10:20:20.557 回答