从函数输入到Javascript插入带换行符的单词

时间:2013-05-17 08:58:05

标签: php javascript html

我的条件如下。 按钮输入中的弹出功能有第1行,后跟换行符第2行。 当我点击按钮到javascript时,它会在控制台中弹出错误“Unexpected token ILLEGAL”。

按钮pop()内的值是动态生成的。只有在输入文本中有新的行字符时才会出现此错误。

<script type='text/javascript'>

function pop(valu)
{
alert("here"+valu);
document.getElementById('box').innnerHTML = valu;
}

</script>

<button onclick="pop('Line 1
Line 2')"> Click </button>
<textarea id='box'></textarea>

后端是PHP。

有没有办法在前台实现这个目标?或者我应该对DB插入值进行任何更改?

我使用换行符直接将值存储在DB中。

2 个答案:

答案 0 :(得分:0)

解决方案用于PHP端的nl2br函数

nl2br($yournewlinestring); 

PHP的函数转换换行符为\ n

输入换行符

但是在存储之前转换你的html换行符就像这样

$_POST['xyz'] = preg_replace('/(?:\r\n|[\r\n])/', PHP_EOL, $_POST['xyz'] ); 

答案 1 :(得分:0)

如果您想要换行符,请执行以下操作:

<?php $pop_variable = str_replace("\n", '\n', $pop_variable); ?>
<button onclick='pop("<?php echo htmlentities($pop_variable, ENT_QUOTES) ?>")' />

请记住也要运行htmlentities以逃避引号。

我确实认为这在HTML中做得太多了。将它存储在PHP数组中然后json_encode()可能更有益。这样您就不必执行上述操作或考虑当“或”位于$ pop_variable时会发生什么,如果您想添加更多按钮(当然,这取决于您的用例),也可能是可扩展的

示例:

<script>
function pop(valu) {
    // Should do some error checking to ensure pop_var is set
    document.getElementById('box').innnerHTML = pop_var[valu];
}
var pop_var = <?php echo json_encode(['button1' => "Line 1\nLine2", 'button1' => "Another Line 1\nAnother line with ' single quotes..."]);
</script>

<button onclick="pop('button1')">Click</button>
<button onclick="pop('button2')">Click</button>
<textarea id='box'></textarea>