如何用 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的主要内容,如果未能解决你的问题,请参考以下文章