Lui*_*uis 8 php textarea function line-breaks
我正在创建一个上传表单,其中包含一个文本区域供用户输入烹饪食谱.基本上,我想要做的是将每行包装在<li>标签中以用于输出目的.我一直试图操纵这个nl2br功能,但无济于事.有人可以帮忙吗?
我正在通过POST检索文本区域的内容并将条目存储在MySQL数据库中.这是代码目前的样子(check_input函数条斜线等):
$prepText=check_input($_POST['preparationText']);
$cookText=check_input($_POST['cookingText']);
Run Code Online (Sandbox Code Playgroud)
不太漂亮,但想到的想法是:
</li><li>项之间的内容:哪个可以翻译成这样的东西:
$new_string = '<li>' . implode('</li><li>', explode("\n", $old_string)) . '</li>';
Run Code Online (Sandbox Code Playgroud)
(是的,糟糕的主意 - 不要这样做,特别是如果文字很长)
另一种更清洁的解决方案是通过以下方式替换字符串中的换行符</li><li> :(
将结果字符串包装在内部,<li>然后</li>打开/关闭它们)
$new_string = '<li>' . str_replace("\n", '</li><li>', $old_string) . '</li>';
Run Code Online (Sandbox Code Playgroud)
有了这个想法,例如,以下部分代码:
$old_string = <<<STR
this is
an example
of a
string
STR;
$new_string = '<li>' . str_replace("\n", '</li><li>', $old_string) . '</li>';
var_dump($new_string);
Run Code Online (Sandbox Code Playgroud)
会得到这种输出:
string '<li>this is</li><li>an example</li><li>of a </li><li>string</li>' (length=64)
Run Code Online (Sandbox Code Playgroud)
\n然后分解字符串,然后将每行包装在li标记中.
<?php
$string = "line 1\nline 2\nline3";
$bits = explode("\n", $string);
$newstring = "<ol>";
foreach($bits as $bit)
{
$newstring .= "<li>" . $bit . "</li>";
}
$newstring .= "</ol>";
Run Code Online (Sandbox Code Playgroud)