1

どうすればxmlの子にcdataを追加できますか?私はこのコードを手に入れました:

$errors = array();
if(isset($_POST['newtopic'])){
    $topicname = preg_replace('/[^A-Za-z]/', '', $_POST['topicname']);
    $textarea = $_POST['textarea'];
    $desc = $_POST['desc'];
    $startedby = $_POST['startedby'];
    $tn = $_POST['topicname'];

    if($topicname == ''){
        $errors[] = 'You`re topic title is missing!';
    }
    if($topicname == ''){
    $errors[] = 'You`re textarea is missing!';
}


    if(count($errors) == 0){
        $xml = new SimpleXMLElement('<topic></topic>');
        $xml->addChild('textarea', $textarea);
        $xml->addChild('desc', $desc);
        $xml->addChild('startedby', $startedby);
        $xml->addChild('date', $date);
        $xml->addChild('topicname', $tn);
        $xml->asXML('topics/sitenews/' . $topicname . '.xml');
        header('Location: sitenews.php');
        die;
    }
}

cdataを$textarea部分にのみ追加したいのですが、すでに使用してみ'<![CDATA['. $textarea .']]>'ましたが、機能しません。

前もって感謝します。

4

1 に答える 1

1

ここを参照してください SimpleXmlElementを使用してCDATAを記述する方法?

リンクされた例からコピー:

class SimpleXMLExtended extends SimpleXMLElement{ 
  public function addCData($cdata_text){ 
   $node= dom_import_simplexml($this); 
   $no = $node->ownerDocument; 
   $node->appendChild($no->createCDATASection($cdata_text)); 
  } 
} 

$doc = new SimpleXMLExtended($xml); 
$element = $doc->addChild('response'); 
$node_note = $element->addChild('note'); 
$node_note->addCData('my cdata guff'); 
var_dump($doc->asXML()); 
于 2013-02-03T19:22:19.447 に答える