gpt4 book ai didi

javascript - 打印出 Javascript 时包含换行符的 PHP 字符串会导致问题

转载 作者:行者123 更新时间:2023-11-29 19:47:43 28 4
gpt4 key购买 nike

我有一个包含地址的 PHP 字符串,因此包含几行。一个例子可能是:

$custDetails = "
123 Main Street
City
Area Code
";

虽然此地址是使用 SQL 查询检索的,但未在 PHP 中声明。

我想暂时用其他内容替换转到行字符,以便在另一个 javascript 函数中更容易修改此字符串。但是我遇到了一些问题。这段代码:

echo "
<script>
if ('$custDetails'.indexOf('\n') != -1)
alert('yes');
alert('$custDetails');
</script>
";

变成:

<script>
if ('123 Main Street
City
Area Code'.indexOf('
') != -1)
alert('yes');
alert('123 Main Street
City
Area Code');
</script>

经过 PHP 处理后。字符串中的“转到行”被视为脚本标记中的转到行,因此会弄乱脚本。此外,我无法检测到\n 字符,因为它被视为转到行,并弄乱了脚本...

如何使多行字符串在 javascript 中可用?

编辑:正如其中一个答案所建议的,我尝试在调用 javascript 之前用 PHP 中的“n”替换“\n”

$custDetailsBis = str_replace("\n", '\n', $custDetails);

echo "<script>
alert(\"$custDetailsBis\");
</script>";

我还是不行,在浏览器中输出:

<script>
alert("16 St Andrews Street
\nDundee
\nDD1 2EX");
</script>

请注意,我知道有\n 出现在浏览器输出中,但仍然有换行符。换行符再次导致 javascript 错误。

最佳答案

试试这个:

$custDetailsEscaped = str_replace("\n", '\r\n', $custDetails);

请注意第一个参数的双引号和第二个参数的单引号 - 这在这里很重要。

然后将 echo 语句中的所有 $custDetails 实例替换为 $custDetailsEscaped:

$custDetailsEscaped = str_replace("\n", '\r\n', $custDetails); 

echo "
<script>
if ('$custDetailsEscaped'.indexOf('\\r\\n') != -1)
alert('yes');
alert('$custDetailsEscaped');
</script>
";

输出:

<script>
if ('\r\n123 Main Street\r\nCity\r\nArea Code\r\n'.indexOf('\r\n') != -1)
alert('yes');
alert('\r\n123 Main Street\r\nCity\r\nArea Code\r\n');
</script>

关于javascript - 打印出 Javascript 时包含换行符的 PHP 字符串会导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18838807/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com