<br/>标签出现在textarea输出中

时间:2009-05-13 00:56:47

标签: php html wordpress

我有一个带有两个textareas的输入表单,允许用户输入每个单词中用逗号分隔的单词。

<form action="http://www.example.com/output.php" method="post">
<table border="0">
<tr>
<td>
<h3 class="title">Prefix</h3>
<textarea cols="34" rows="8" name="cat[]"></textarea></td>
<td>
<h3 class="title">Suffix</h3>
<textarea cols="34" rows="8" name="cat[]"></textarea></td>
</tr>
</table>

Enter words separated by a comma. 

<input type="submit" value="Go" /> </form> 

然后将它们传递给输出形式,该形式将逗号中的单词分解,然后将它们连接在一起,直到创建了所有可能的单词排列。然后它将结果打印到textarea中。我的问题是输出(虽然格式正确并且在每个排列之间有换行符)在每一行的末尾都有一个br标记。例如

testtest2<br />
testtest2<br />
testtest4<br />
testetest2<br />
testetest2<br />
testetest4<br />

输出表格:     

$cat = $_POST['cat']; //trait set for textbox inputs
foreach(array_keys($cat) as $key){
$cat[$key] = explode(",", str_replace(' ','',$cat[$key]));
}    

function showCombinations($string, $traits, $i)
{
if ($i >= count($traits))
echo trim($string)."\n";  
else
{
foreach ($traits[$i] as $trait)
showCombinations("$string$trait", $traits, $i + 1);
}
}
?>

<form name=form1 method=post action=''''>
<textarea><?php ShowCombinations('', $cat, 0); ?></textarea>
</form>
  1. 当我删除输出的textarea标签时,它可以正常工作。
  2. 当我离开textarea标签并删除/替换echo trim($ string)时。“\ n”;用“\ r”或“n”或“\ n \ r”来表示,这种情况消失了,但我也失去了换行符
  3. 替换echo trim($ string)。“\ n”; with echo nl2br($ string);然后结果与2相同。
  4. 替换为echo nl2br($ string)。“\ n”;那么结果与1相同。
  5. 非常感谢任何帮助。我的noob大脑即将崩溃。

7 个答案:

答案 0 :(得分:2)

我将在前言中说我使用Blogger而不是Wordpress,但我想有相似之处。在Blogger中,有一个设置可将换行符转换为<br>标记。我想如果你没有放入代码片段等(如果你是关于猫或其他东西的博客),那么这很方便,但对于编程而言却不是这么多。我必须将其关闭并手动输入我的段落标签等。

这是一个less than ideal solution,它还提到Wordpress在表单中插入<br>标记的问题。

答案 1 :(得分:1)

我认为<br />标签就是你想要的。像\ n和\ r \ n这样的换行符不会在HTML中执行任何操作 - 所有空格(包括换行符)都会被忽略。 <br />标签本质上是HTML等价物 - 它代表“休息”。我不太了解PHP,所以我不知道为什么它会自动将<br />放在那里,但这对于你所描述的内容来说是正确的HTML。

从技术上讲,有更好的方法来格式化输出然后使用这些标签,但这更像是一个高级主题。如果你对此有点新意,就像你说的那样,那么现在就让它以这种方式工作,然后在未来的某个时候你可以了解正确的语义HTML标记,CSS样式等。

答案 2 :(得分:1)

尝试使用它,我已经测试过了......

<!DOCTYPE HTML>
<html>
<head></head>
<body>
<?php 
if(isset($_POST['status'])){
$newLineCode = "<br/>";
$message = $_POST['status'] ;
$modifiedTextAreaText = ereg_replace( "\n", $newLineCode, $message);
echo " <p>Result of Code Snippet:</p> " . $modifiedTextAreaText ;
}
?>
<form action="" method="post">
<textarea name="status"></textarea>
<input type="submit"/>
</form>
</body>
</html>

答案 3 :(得分:0)

为什么不在<div><p> ??

上显示结果

答案 4 :(得分:0)

我相信\n应该有用。也许您没有或有不正确的doctype。

示例:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

如果一切,我喜欢锁的回答。你可以给我们一个<div>,你甚至可以把它设计成类似于<textarea>(甚至更好!)

答案 5 :(得分:0)

看了一些,但过了一段时间后,我能够在wp-includes / formatting.php文件中找到这两个位置(第154行和第165行 - WP 2.8)。

154     $pee .= '<p>' . trim($tinkle, "\n") . "</p>\n"; //<-- before
154     $pee .= trim($tinkle, "\n") . "\n"; //<-- after

165     $pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks <-- before
165     $pee = preg_replace('|(?<!<br />)\s*\n|', "\n", $pee); // optionally make line breaks <-- after

这会处理我的textarea字段中的段落和中断标记。

答案 6 :(得分:0)

我通过使用strip_tags函数解决了我的问题。当用户编辑过去的帖子时,它会在数据库中保存并显示在博客上。但strip_tags函数负责处理它。