Quirky javascript php实现用php替换js中的数据,数据传输返回breaks javascript


Quirky javascript php implementation replace data in js with php data carriage returns breaks javascript

我正在研究其他人的遗留代码,他们有一个奇怪的实现,他们做了以下事情:

- load javascript file into php
- perform a string replace for variables, such as replacing `$intro` with mysql data in the javascript

我的问题是$intro数据包含carriage returns,所以当我用mysql数据对javascript执行string replace时,它会导致javascript中断。

以下是javascript中的代码行:

 dialog.i_intro.value="$intro";

下面是php中的代码行:

$ln=str_replace("'$intro",$intro,$ln);

数据如下:

 dialog.i_intro.value = "Hello World
 Hello World
 Hello World";

如何解决此问题?

更新我需要javascript 中的回车

我正在尝试以下操作:

在php:中

$intro = str_replace("'r'n","--carriage--",$intro);

在Javascript中:

dialog.i_intro.value=dialog.i_intro.value.replace('--carriage--',''r'n');

但有些东西不起作用。

扩展更新

我已经用html换行符替换了所有换行符。我发现代码正在使用eval来解释js。这是我当前intro variable的javascript输出。

dialog.i_intro.value="Hi Im Jonathan<br />
<br />
Hi Im Jonathan<br />
<br />
Hi Im Jonathan";

我下一步该怎么办?

可以使用正则表达式将'''n'或'''n''r'字符替换为'<br />'.或空字符串''。

dialog.i_intro.value = i_intro.value.replace(/'n'r?/g, '<br />');

Javascript(至少目前在浏览器中部署了Javascript,在ES6中应该更容易)不能非常直观地处理字符串中的行结尾。你最好的选择是逃离回车,就像一样

 dialog.i_intro.value = "Hello World '
 Hello World '
 Hello World";

这不应该触发错误,并且将保留所需的换行符。

要实现,请尝试以下操作,而不是当前的PHP字符串替换行:

$intro = str_replace("'n"," '''n",$intro);