【问题标题】:Passing newlines using PHP to a textarea使用 PHP 将换行符传递给 textarea
【发布时间】:2015-11-02 22:02:31
【问题描述】:

我正在尝试制作一个电子邮件地址列表(每个都换行)。我从数据库中提取数组,沿逗号分隔符分解它,然后通过 foreach 循环运行它。

$emailsList = "";
foreach($emails as $email)
{ 
    $emailsList = $emailsList . "\n" . $email;
}
echo "Additional Report Emails<textarea name='showReportsEmails'>".$emailsList."</textarea>";

当我查看 textarea 本身时,它会字面上显示 textarea 中的换行标记。我该怎么做才能摆脱这种情况并让文本按照我的意愿行事?

<br />
email1@gmail.com<br />
 email2@gmail.com

谢谢!

【问题讨论】:

标签: php html


【解决方案1】:

看起来当结果在 textarea 中打印时,PHP 新行(\n)被转换为&lt;br/&gt;s。所以,也许有一个 nl2br() 函数用于将结果输出到文本区域。应该通过删除它来修复它。否则,您可以在设置 textarea 的内容时使用下面的代码:

<textarea><?php echo implode("\n", array_map('trim', explode("\n", strip_tags($emailsList)))); ?></textarea>

上面的代码首先删除了$emailsList变量中的所有html标签,然后还删除了行前后的空格,所以你最好继续这样做。

【讨论】:

  • 有趣。这删除了其中一个中断,但不是两个。
  • @AKor 我不知道它是否因为我犯了一个愚蠢的错误而不起作用。我忘记包含 PHP 标记并回显输出。你能检查更新的代码吗?
  • @AKor 我再次更新了代码,而不是trim(),这似乎是在删除内容开头和结尾的空格,我使用implode(),@987654327 @ 和 explode() 删除每一行的空格。
  • 不,不走运。仍然存在两个中断标签。我似乎无法摆脱它们。
【解决方案2】:

您应该在文本区域中使用回车而不是 HTML 代码。 \r

【讨论】:

    【解决方案3】:

    名称表明该元素只能包含文本。它不会解析为HTML,而是解析为文本。

    我测试了这段代码:

    <?php
    $value = "Hello,\nname\nis\nScript47.";
    
    echo "<textarea>$value</textarea>";
    ?>
    

    输出

    编辑 1:

    您也可以使用\r 看看是否有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      相关资源
      最近更新 更多