Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP/JavaScript中解析换行符_Php_Javascript - Fatal编程技术网

在PHP/JavaScript中解析换行符

在PHP/JavaScript中解析换行符,php,javascript,Php,Javascript,编辑:好的,谢谢你们的帮助。使用zerkms的建议,我成功地插入了标记,而不是回车,因此它在页面上正确显示,并且不会破坏javascript。现在的问题是,当用户单击此文本时,它将成为一个文本区域,因此是内联可编辑的。但是,文本字符串中现在显示了标记,而不仅仅是多行上的可编辑文本 有什么建议吗 原始问题:我的PHP应用程序中有一个文本区域,用户可以在其中输入项目中的注释。有时通过PHP在页面上显示,有时通过javascript显示。问题是,如果注释跨越多行(即用户在文本区域输入注释时按enter

编辑:好的,谢谢你们的帮助。使用zerkms的建议,我成功地插入了

标记,而不是回车,因此它在页面上正确显示,并且不会破坏javascript。现在的问题是,当用户单击此文本时,它将成为一个文本区域,因此是内联可编辑的。但是,文本字符串中现在显示了标记,而不仅仅是多行上的可编辑文本

有什么建议吗

原始问题:我的PHP应用程序中有一个文本区域,用户可以在其中输入项目中的注释。有时通过PHP在页面上显示,有时通过javascript显示。问题是,如果注释跨越多行(即用户在文本区域输入注释时按enter键),则会导致JS失败。当它由PHP完成时,就可以了

这一行代码是:

var editnotes='<textarea class="desc_text" style="width:20em;" id="notes_editor"><?php print $notes; ?></textarea>';
var editnotes='';
因此,如果注释跨越多行,PHP将分页器构建为:

var editnotes='<textarea class="desc_text" style="width:20em;" id="notes_editor">This is
a test note
over multiple lines
</textarea>';
var editnotes='这是
试纸
多行
';
这显然会给js带来问题。所以我的问题是,我能做些什么来防止这种情况?由于代码是在进入浏览器之前由PHP生成的,因此我认为最好的方法可能是在PHP中对其进行解析,以便输出更像这样:

var editnotes='<textarea class="desc_text" style="width:20em;" id="notes_editor">This is<br/>a test note<br/>over multiple lines<br/></textarea>';
var editnotes='这是一个多行的测试注释
这样行吗?我该怎么做

谢谢

截至,没有帮助。第二个建议是将\附加到所有换行符中。以某种方式:

preg_replace('!([\r\n]+)!', '\\\$1', $text);
为明确起见,样本:

var baz = 'foo
bar';
现在变成:

var baz = 'foo\
bar';
使用json_encode()为javascript输出一个值

var editnotes = <?php echo json_encode($str); ?>;
var editnotes=;

修复Javascript中“失败”的部分怎么样?谢谢,这将是理想的解决方案。如何让javascript允许该变量跨越多行?谢谢,我不确定这是否有效,因为文本来自MySQL文本字段,所以我不确定换行符是否以“\n”的形式存储在字符串中,好的,所以我尝试使用它,它会将
添加到字符串中,但不会删除换行符,所以我最后得到了:一个多行的测试笔记
哎呀,它真的没有删除换行符,很抱歉:-(澄清:这似乎不允许我在多行上添加注释,但字符串在每行
之后都以新行开始,并包括标记。感谢zerk,这对我也不起作用。我需要输出更符合var baz='foo
bar';的要求。我现在已经使用ereg_replace成功地将其添加到该阶段,但没有问题是html现在不会在
标记所在的文本区域中呈现换行符!我试过了,它似乎只是在文本周围加了引号。你是说它不会生成有效的javascript字符串吗?