0

我目前正在尝试在 JavaScript 中回显文本文件的内容。一切正常,但有一个问题。文本中的文本包含撇号,这将所有内容都扔掉了。下面是我正在使用的部分代码。我将此代码用于许多文本文件。我考虑过在每个文本文件中将每个撇号更改为“\'”,但是有很多文本文件需要处理。我只是好奇是否有另一种方法可以解决这个问题。任何想法都非常感谢。

<?php
     $lyrics = file_get_contents('Includes/Songs/Lose_My_Mind.txt');
?>

JavaScript 片段:

var scrollercontent='<?php echo $lyrics; ?>'
4

7 回答 7

4

虽然addslashes大多数情况下都会起作用,但这更好:

var scrollercontent= <?php echo json_encode($lyrics, JSON_HEX_TAG); ?>;

json_encode适用于任何数据类型,而不仅仅是字符串。对于字符串,它会在两侧为您添加引号,并且它适用于任何字符,包括控制代码,例如换行符。

JSON_HEXs 是 PHP 5.3 的一个特性。HEX_TAG替换<为 JavaScript 字符串文字编码,如\x3C,这意味着您可以将任何字符串文字放在一个<script>块中,而不必担心它可能包含</script>会过早结束脚本块的序列。(即使仅靠</它本身在技术上也是无效的。)

于 2009-12-12T14:39:18.067 回答
2

尝试使用addlashes()函数。在你的情况下:

var scrollercontent='<?php echo addslashes($lyrics); ?>'
于 2009-12-12T13:39:53.667 回答
1

尝试

addslashes(nl2br($lyrics))

(用标签nl2br替换新行。)<br>

于 2009-12-12T16:03:10.390 回答
0

尝试改变这个

var scrollercontent='<?php echo $lyrics; ?>'

对此

var scrollercontent='<?php echo addslashes($lyrics); ?>'

或者

var scrollercontent='<?php echo htmlentities($lyrics); ?>'

这些应该有助于逃避或实体化引号等...

于 2009-12-12T13:40:33.537 回答
0

你有没有尝试过:

<?php $lyrics = addslashes(file_get_contents('Includes/Songs/Lose_My_Mind.txt')); ?>

于 2009-12-12T13:41:55.207 回答
0

您可以在file_get_contents命令后添加以下行:

$lyrics = str_replace("\'","\\'",$lyrics);

这会将所有单个撇号更改为转义撇号,并且应该与 Javascript 配合得很好。

于 2009-12-13T02:39:53.743 回答
0
<?php
$lyrics = nl2br(htmlentities(file_get_contents('Includes/Songs/Lose_My_Mind.txt'), ENT_QUOTES)); 
?>
var scrollercontent="<?php echo $lyrics; ?>";
于 2009-12-13T02:56:32.930 回答