2

<textarea>私の Web サイトのユーザーは、おそらく複数の段落を含むテキストを入力するフォームを開きます。<p>それらが送信されると、テキストはタグ内の各段落の HTML ページで利用できるようになります。彼らは後日戻って、.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));
}

&#13;.xml ファイルを調べてみると、すべての段落に 1 つのノードがあり、それらはファイル内で と改行で区切られています。ブラウザ(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 ファイルの改行になります。今、私は迷っています。

目的の効果を得るために内破および爆発するために何を使用する必要があるかを知っている人はいますか?

よろしくお願いします!

4

0 に答える 0