In a Symfony project, I have something like this:
$crawler = new Crawler($this->bigString());
$array = array();
foreach($crawler->filter('.editable') as $domElement )
{
$innerHtml = $this->getChildHtml($domElement);
$array[$domElement->getAttribute('id')] = $innerHtml;
$domElement->nodeValue = '{{ listEditables["' . $domElement->getAttribute('id') . '"] }}';
$crawler->addNode($domElement);
}
$page->setEditables($array);
$em->persist($page);
$em->flush();
Where the bigString method returns
<div class="info pmt0 wrap">
<p id="p_editable_2" class="editable">所谓设计,创于人,且用于人......</p>
... a bunch of other html element with Chinese in it ...
</div>
and I use
private function getChildHtml($node)
{
$innerHtml= '';
$children = $node->childNodes;
foreach( $children as $child )
{
$innerHtml .= sprintf( '%s%s', $innerHtml, $child->ownerDocument->saveXML( $child ) );
}
return $innerHtml;
}
to get the inner HTML.
I can't get the persisted elements to be accurately representing the Chinese characters, all I get is nonsense. Using
var_dump($innerHtml);
shows that getChildHtml() doesn't return the original Chinese characters. Any idea how I can get it to do so?