如何用 li 标签在 textarea 中换行? PHP

Posted

技术标签:

【中文标题】如何用 li 标签在 textarea 中换行? PHP【英文标题】:How to wrap each new line in textarea with li tags? PHP 【发布时间】:2011-03-30 02:06:56 【问题描述】:

我有一个 textarea 表单字段,用户将在其中将 URL 用新行分隔。是否可以用

标签包装这个 textarea 字段中的每一行?

所以我需要该字段的输出是这样的:

<li>some.url.com</li>
<li>some.url.com</li>
<li>some.url.com</li>
<li>some.url.com</li>
<li>some.url.com</li>

请问有谁知道用 php 实现这个目标吗?

【问题讨论】:

【参考方案1】:
$textareaData = '<li>'.str_replace("\n","</li>\n<li>",trim($textareaData,"\n")).'</li>';

编辑

修改为去掉所有空行:

$textareaData = '<li>'.str_replace(array("\r","\n\n","\n"),array('',"\n","</li>\n<li>"),trim($textareaData,"\n\r")).'</li>';

【讨论】:

谢谢马克这很好用。如果我也能以某种方式省略空行,那就完美了! 谢谢!完美运行。非常感谢!【参考方案2】:

这样的事情呢

echo preg_replace('/^(.+)(\s*)$/m', '<li>$1</li>', $text);

输出将是这样的(不是很好,但很有用):

<li>dsadsa
</li>
<li>dsdsa
</li>
<li>dsadsad
</li>
<li>dsadsadsad
</li>
<li>vcxvxcvxvcxvcx
</li>
<li>fdsfdsfdsfs
</li>

【讨论】:

【参考方案3】:

使用正则表达式,您可以在测试中检查非空行:

$li_text = preg_replace('/^(.+)$/', '<li>$1</li>', $_POST['textarea']);

这样,如果用户在其输入的末尾(或其中的任何地方)有一个额外的新行,您将不会获得额外的空列表项。

【讨论】:

这很好,但不能让它工作。它不会将 li 标签放在来自 textarea 的任何内容上,但硬编码数据有效。顺便说一句,如果这有所作为,我将来自 textarea 的内容作为变量获取。 更新:如果文本区域中只有 1 行文本,它可以正常工作。如果超过 1 行,则不会添加任何 li 标签。 编辑添加多行正则表达式选项。

以上是关于如何用 li 标签在 textarea 中换行? PHP的主要内容,如果未能解决你的问题,请参考以下文章

textarea换行

避免在textarea中换行[重复]

在 PHP 中的 textarea 值中换行

如何在 pre 标签中换行?

GTK3 在按钮标签中换行

TextArea 如何用js判断每11个字符就让他换行,有回车的效果,假如我一直输入不按回车也会判断有多少行