DOMDocument::saveHTML() Method Not Accepting Single Argument [message #178948] |
Mon, 27 August 2012 04:25 |
SMH
Messages: 3 Registered: July 2012
Karma: 0
|
Junior Member |
|
|
Using PHP 5.2
The DOMDocument object method saveHTML() explains that I can pass a DOMNode
object as an optional parameter and get the string output of just the node.
http://www.php.net/manual/en/domdocument.savehtml.php
I have verified that the object I am passing to the method is a DOMElement
object, a type of DOMNode.
I keep getting the warning:
Warning: DOMDocument::saveHTML() expects exactly 0 parameters,
1 given in <php script document>
Is this a bug?
Commentary below does not even address the use of the method with the
optional argument.
====
What do I want to do??
I have DOM elements with mostly one child node of type DOMText representing
file names, and I use 'textContent' property to get the string representing
the file name.
However, some filenames contained characters, like '&', and I had to use
method DOMDocument:createEntityReference() to append them as child nodes to
the element.
But when I try to retrieve with 'textContent' property, only child nodes of
type DOMText are returned concatenated, not entity references.
I figured saveHTML([DOMElement]) might fix this.
|
|
|
Re: DOMDocument::saveHTML() Method Not Accepting Single Argument [message #178950 is a reply to message #178948] |
Mon, 27 August 2012 05:09 |
Adam Harvey
Messages: 25 Registered: September 2010
Karma: 0
|
Junior Member |
|
|
On Mon, 27 Aug 2012 04:25:49 +0000, SMH wrote:
> Using PHP 5.2
>
> I keep getting the warning:
>
> Warning: DOMDocument::saveHTML() expects exactly 0 parameters,
> 1 given in <php script document>
>
>
>
> Is this a bug?
The manual page you linked to has a changelog, which indicates that the
parameter was added in PHP 5.3.6.
> However, some filenames contained characters, like '&', and I had to use
> method DOMDocument:createEntityReference() to append them as child nodes
> to the element.
Why? If you're adding the text as text nodes, there's no need to
explicitly create entity references: $doc->createTextNode('foo&bar');
results in a valid text node which will be saved as "foo&bar" when
save() or saveXML() are called.
> But when I try to retrieve with 'textContent' property, only child nodes
> of type DOMText are returned concatenated, not entity references.
Entity references aren't text content, at least as far as libxml and PHP
are concerned.
> I figured saveHTML([DOMElement]) might fix this.
It may, but not until you use a version of PHP that supports it. :)
Adam
|
|
|
Re: DOMDocument::saveHTML() Method Not Accepting Single Argument [message #178951 is a reply to message #178950] |
Mon, 27 August 2012 06:07 |
SMH
Messages: 3 Registered: July 2012
Karma: 0
|
Junior Member |
|
|
Adam Harvey <usenet(at)adamharvey(dot)name> wrote on Mon 27 Aug 2012 08:09:11a
> On Mon, 27 Aug 2012 04:25:49 +0000, SMH wrote:
>> Using PHP 5.2
>>
>> I keep getting the warning:
>>
>> Warning: DOMDocument::saveHTML() expects exactly 0 parameters,
>> 1 given in <php script document>
>>
>>
>>
>> Is this a bug?
>
> The manual page you linked to has a changelog, which indicates that the
> parameter was added in PHP 5.3.6.
>
>> However, some filenames contained characters, like '&', and I had to use
>> method DOMDocument:createEntityReference() to append them as child nodes
>> to the element.
>
> Why? If you're adding the text as text nodes, there's no need to
> explicitly create entity references: $doc->createTextNode('foo&bar');
> results in a valid text node which will be saved as "foo&bar" when
> save() or saveXML() are called.
>
>> But when I try to retrieve with 'textContent' property, only child nodes
>> of type DOMText are returned concatenated, not entity references.
>
> Entity references aren't text content, at least as far as libxml and PHP
> are concerned.
>
>> I figured saveHTML([DOMElement]) might fix this.
>
> It may, but not until you use a version of PHP that supports it. :)
Thanks, Adam.
I think I resorted to using it because of some error or other warning I got
with special HTML characters, and it probably applied to THAT situation, but
clearly not to THIS situation; over-thinking, I guess.
Your explanations resulted in warning-free code.
I'll remember to read the changelog too to make sure that the syntax applies
to the current version. I use 5.2 because I think that is the latest
version produced as a ready binary for Win 7 running Apache 2.2, but then
again, I could certainly even be wrong on that as well. :)
> Adam
|
|
|