In the effiliation pluggin for prestashop, i've found this code:
$values->addChild('marque', '<![CDATA['.$product['manufacturer_name'].']]>');
when in $product['manufacturer_name'], i have Cyril & Nathalie Daniel, the output is <![CDATA[Cyril,
as opposed to the normal case: <![CDATA[Foo Bar]]>
Can the 2nd argument of SimpleXMLElement::addChild can contain & ? Do i have to use some htmlentities on the manufacturer name ?
My problem is described here:
Note that although addChild() escapes "<" and ">", it does not escape the ampersand "&".
The solution proposed php.net (htmlentities or htmlcspecialchars) is not a good one, so i came up with what salathe suggested:
<?php
class SimpleXMLExtended extends SimpleXMLElement // http://coffeerings.posterous.com/php-simplexml-and-cdata
{
public function addCData($cdata_text)
{
$node= dom_import_simplexml($this);
$no = $node->ownerDocument;
$node->appendChild($no->createCDATASection($cdata_text));
}
}
and instead of
$values->addChild('marque', '<![CDATA['.$product['manufacturer_name'].']]>');
use :
$values->addChild('marque')->addCData($product['manufacturer_name']);
Output is now <![CDATA[Cyril & Nathalie Daniel]]>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With