我已经阅读过这篇文章,讨论如何将html break标记转换为php中的新行.其他人说这对他们有用,但有些奇怪的事发生在我身上.
这是我使用的代码:
$breaks = array("<br />", "<br>", "<br/>");
$jawaban = str_ireplace($breaks, " ", $jawaban1);`
Run Code Online (Sandbox Code Playgroud)
这是他们使用的代码:
$breaks = array("<br />", "<br>", "<br/>");
$text = str_ireplace($breaks, "\r\n", $text);
Run Code Online (Sandbox Code Playgroud)
如果有任何以前的帖子/ PHP方法让我知道
编辑:添加我的代码回显文本框
<-- THIS WONT WORK -->
$username = $_SESSION['username'];
$unsafenomorsoal = $_POST['nomorsoal'];
$unsafejawaban = $_POST['jawaban'];
$nomorsoal = mysqli_real_escape_string($konek,$unsafenomorsoal);
$jawabannotcut = substr($unsafejawaban,0,50000);
$unsafejawabanfirst = nl2br($jawabannotcut);
$jawaban1 = mysqli_real_escape_string($konek,$unsafejawabanfirst);
$breaks = array("<br />","<br>","<br/>");
$jawaban = str_ireplace($breaks, PHP_EOL, $jawaban1);
$_SESSION['textvaluejawaban'] = $jawaban;Run Code Online (Sandbox Code Playgroud)
这就是回应:
echo "<div class=\"head-main-recent-background\" style=\"background:white;width:99%;color:black;text-align:left;height:1000px;position:relative;top:130px;margin-top:10px;\">- Jawab Soal -<br/>".$jawabanerror."<br/>Nama : ".$_SESSION['username']."<br/>
<form method=\"post\" action=\"prosesjawabsoal.php\">
<input type=\"hidden\" name=\"nomorsoal\" value=\"".$_SESSION['nomorsoal']."\"/>
Jawaban : <br/>
<textarea placeholder=\"Max 40.000 Huruf\" style=\"overflow- x:none;width:99%;height:300px;\" type=\"text\" name=\"jawaban\" maxlength=\"40000\" >".$_SESSION['textvaluejawaban']."</textarea>
<br/>Captcha <br/>
<div style=\"overflow:hidden;\" class=\"g-recaptcha\" data- sitekey=\"6LfYQicTAAAAAFstkQsUDVgQ60x_93obnKAMKIM9\"></div><br/>
<button type=\"submit\" name=\"submit\" style=\"margin-top:10px;height:auto;width:auto;\">Kirim Jawaban</button>
</form>
</div>";Run Code Online (Sandbox Code Playgroud)
注意:该片段无法正常工作,因为它是php
抱歉我在发布代码时因错误而使用了片段!
编辑:
尝试preg_replace()方法但仍然相同的结果
编辑:
更改标题告诉preg_replace不起作用
你的问题是mysqli_real_escape_string().将"\ r \n"转换为字符串,以便安全地输入数据库.完全删除它.而是htmlspecialchars在输出到屏幕时使用:
echo htmlspecialchars($myUnsafeVar);
Run Code Online (Sandbox Code Playgroud)
应用这些规则(作为起点,总是存在例外,但在极少数情况下):
mysqli_real_escape_string输入字符串到数据库时.输出到屏幕时它不会做你期望的 - 所以任何mysql escaped()的东西都不应该出现在屏幕上.htmlspecialchars输出到屏幕时使用(你没有!).url_encode添加的东西到一个URL检查功能以获取更多详细信息.
目前看来,即使进行了所有这些努力,您的代码也不安全 - 但修复起来非常简单!
小智 -2
总有一些东西可以拯救我的一天,这实际上是一种解决方法,你的问题是我进一步深入研究这个问题的触发因素——一劳永逸。
现在,你可以 - 漂亮而时尚的解决方法:
已经有nl2br()函数可以替换<br>在换行符之前插入标签:
示例(键盘):
<?php
// Won't work
$desc = 'Line one\nline two';
// Should work
$desc2 = "Line one\nline two";
echo nl2br($desc);
echo '<br/>';
echo nl2br($desc2);
?>
Run Code Online (Sandbox Code Playgroud)