从文本区域获取每一行[重复]

2024-03-09

<textarea> put returns between paragraphs
for linebreak add 2 spaces at end
indent code by 4 spaces
quote by placing > at start of line
</textarea>

$text = value from this textarea;

How to:

1)从该文本区域获取每一行($text)并与他们一起使用foreach()?

2) Add <br />到每一行的末尾,除了最后一行?

3) 将每一行放入一个数组中。

重要的- 文本区域内的文本可以是多语言的。


曾尝试使用:

$text = str_replace('\n', '<br />', $text);

但这不起作用。


Thanks.


Warning:这个答案集中在OP的特定部分,与问题标题无关。对于“如何获取每一行”问题的答案,请考虑下面的帖子。

你会想要调查一下nl2br() http://www.php.net/nl2br函数与trim() http://www.php.net/trim.

The nl2br()将插入<br />在换行符之前(\n)和trim()将删除任何结尾\n或空白字符。

$text = trim($_POST['textareaname']); // remove the last \n or whitespace character
$text = nl2br($text); // insert <br /> before \n 

那应该做你想做的事。

UPDATE

以下代码不起作用的原因是为了\n要被识别,它需要位于双引号内,因为双引号解析其中的数据,而单引号则按字面意思理解,IE"\n"

$text = str_replace('\n', '<br />', $text);

要修复它,将是:

$text = str_replace("\n", '<br />', $text);

但还是使用内置的更好nl2br()函数,PHP提供。

EDIT

抱歉,我认为第一个问题是这样你可以添加换行符,实际上这会很大程度地改变答案,因为任何类型的explode() http://www.php.net/explode将删除换行符,但这里是:

$text = trim($_POST['textareaname']);
$textAr = explode("\n", $text);
$textAr = array_filter($textAr, 'trim'); // remove any extra \r characters left behind

foreach ($textAr as $line) {
    // processing here. 
} 

如果您这样做,您将需要附加<br />在您自己完成处理之前,将其放在行尾,因为explode()函数将删除\n人物。

添加了array_filter() http://www.php.net/array_filter to trim()关闭任何额外的\r那些可能一直挥之不去的人物。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从文本区域获取每一行[重复] 的相关文章

随机推荐