无法确定textarea中的折线字符

时间:2013-07-26 12:37:21

标签: php xml textarea entity line-breaks

我网站上的用户会打开一个带有<textarea>的表单,他们会在其中输入文字,可能会有多个段落。提交后,文本将在HTML页面中显示,每个段落都在<p>个标记内。他们可能会在以后再回来并对他们写的内容进行更改,这些内容将存储在.xml文件中。

我是使用php创建和编辑.xml文件的新手,但这似乎是有序的。我一直做的噩梦就是将段落中的段落分解成不同的节点。加载带有表单的页面时我一直在使用的是

$pageElements = array('title','subtitle','parag');
// [...]

foreach($pageElements as $element){
   $temp = $page->getElementsByTagName($element);
   foreach($temp as $node){
      $t[$element][] = $node->nodeValue;
   }
}

// [...]
$t['parag'] = implode('&#10;&#10;',$t['parag']);

这将显示<textarea>中用双断行分隔的段落,所以这是我想要的。但是当用户提交表单时,我使用以下代码将段落插回到.xml中:

// [ delete all nodes from that page ]
$t['parag'] = explode('&#10;&#10;',$_POST['parag']);
// [...]
foreach($t['parag'] as $parag){
    $parags->appendChild($xml->createTextNode($parag));
}

当我查看.xml文件时,所有段落都有一个节点,它们由&#13;分隔,文件中有换行符。在我看来,当浏览器(我试过Chrome和Firefox)找到&#10;时,它会将它转换为其他一些换行符,我找不到将它爆炸回数组的内容。如果我再次使用表单加载页面,它会将字符串分成段落,但是当我开始编写其他页面的代码时,我希望将每个段落放在<p>中,我会需要他们分开。

我查看了这个网站上的很多帖子都没有运气。我也尝试了以下所有组合:

$t['parag'] = implode('&#13;&#13;',$t['parag']);
$t['parag'] = implode('&#13;\n',$t['parag']);
$t['parag'] = implode('\n',$t['parag']);
$t['parag'] = implode('&#10;\n',$t['parag']);
$t['parag'] = implode('\n\r',$t['parag']);
$t['parag'] = implode('\r\n',$t['parag']);
$t['parag'] = implode('&#13;&#10;',$t['parag']);
$t['parag'] = implode('&#10;&#13;',$t['parag']);

$t['parag'] = explode('&#13;&#13;',$_POST['parag']);
$t['parag'] = explode('&#13;&#10;',$_POST['parag']);
$t['parag'] = explode('&#13;\n',$_POST['parag']);
$t['parag'] = explode('&#13;\r',$_POST['parag']);
$t['parag'] = explode('\n\r',$_POST['parag']);
$t['parag'] = explode('\r\n',$_POST['parag']);
$t['parag'] = explode('<br />',nl2br($_POST['parag']));

我认为我尝试了&#13; &#10; \n\r的所有组合,它们总是导致&#13;和xml文件中的换行符。现在我迷路了。

有没有人知道我应该使用什么内爆和爆炸才能达到预期的效果?

非常感谢提前!

0 个答案:

没有答案