2

我网站中的用户将打开一个表单<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;时,它会将其转换为其他换行符,而我找不到将其分解回数组的内容。如果我再次使用表单加载页面,它会将字符串分成段落,但是当我开始为另一个页面编写代码时,我希望将每个段落放在 a 中<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我想我尝试了and的所有组合,\r它们总是导致&#13;xml 文件中出现换行符。现在我迷路了。

有谁知道我应该使用什么来内爆和爆炸以获得预期的效果?

提前谢谢了!

4

0 回答 0