我网站上的用户会打开一个带有<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(' ',$t['parag']);
这将显示<textarea>
中用双断行分隔的段落,所以这是我想要的。但是当用户提交表单时,我使用以下代码将段落插回到.xml中:
// [ delete all nodes from that page ]
$t['parag'] = explode(' ',$_POST['parag']);
// [...]
foreach($t['parag'] as $parag){
$parags->appendChild($xml->createTextNode($parag));
}
当我查看.xml文件时,所有段落都有一个节点,它们由
分隔,文件中有换行符。在我看来,当浏览器(我试过Chrome和Firefox)找到
时,它会将它转换为其他一些换行符,我找不到将它爆炸回数组的内容。如果我再次使用表单加载页面,它会将字符串分成段落,但是当我开始编写其他页面的代码时,我希望将每个段落放在<p>
中,我会需要他们分开。
我查看了这个网站上的很多帖子都没有运气。我也尝试了以下所有组合:
$t['parag'] = implode(' ',$t['parag']);
$t['parag'] = implode(' \n',$t['parag']);
$t['parag'] = implode('\n',$t['parag']);
$t['parag'] = implode(' \n',$t['parag']);
$t['parag'] = implode('\n\r',$t['parag']);
$t['parag'] = implode('\r\n',$t['parag']);
$t['parag'] = implode(' ',$t['parag']);
$t['parag'] = implode(' ',$t['parag']);
$t['parag'] = explode(' ',$_POST['parag']);
$t['parag'] = explode(' ',$_POST['parag']);
$t['parag'] = explode(' \n',$_POST['parag']);
$t['parag'] = explode(' \r',$_POST['parag']);
$t['parag'] = explode('\n\r',$_POST['parag']);
$t['parag'] = explode('\r\n',$_POST['parag']);
$t['parag'] = explode('<br />',nl2br($_POST['parag']));
我认为我尝试了
\n
和\r
的所有组合,它们总是导致
和xml文件中的换行符。现在我迷路了。
有没有人知道我应该使用什么内爆和爆炸才能达到预期的效果?
非常感谢提前!