If you are very busy, you can answer "yes, yes, no" :)

1.
> Setting the value using the value property should behave like setting the 
> value via
> the DOMAttr constructor - input should be treated as literal text
But in this case value does not be treated:
$attr = new DOMAttr('test', 'foo&bar');
var_dump($attr->value);
string(11) "foo&bar"

So, this is bug?
May be I misunderstood something?

2. I saw you comment in the bug page.
May I write test for this cases and in this testcase show how avoid this "bug"?

3. May be add $DOMAttr->getEntitiesValue() method? Because I think
htmlspecialchars_decode function are not equal libxml function
xmlEncodeEntitiesReentrant (this function use entity table). Is this
function used as analog for htmlspecialchars_decode in libxml?
Unfortunatelly, I can't find libxml analog function for
htmlspecialchars php function :(


Thank you.

2010/2/14 Rob Richards <rricha...@php.net>:
> Sokolov Evgeniy wrote:
>>
>> Hi, I wont fix this bug: http://bugs.php.net/bug.php?id=47532, but
>> have some questions. Can you help me?
>>
>> There is the test case: http://pastebin.org/91030
>>
>> First, I careful that when we fix this bug, we have broken BC, because
>> now when we write $attr->value = "foo&amp;bar"; - value has been
>> escaped and in var_dump($attr->value) we got "foo&bar". For fix this
>> bug we must remove escaping. This is right?
>>
>>
>> Second, for remove escaping I think we need use this patch:
>>
>> Index: attr.c
>> ===================================================================
>> --- attr.c      (revision 294790)
>> +++ attr.c      (working copy)
>> @@ -193,7 +193,7 @@
>>                convert_to_string(newval);
>>        }
>>
>> -       xmlNodeSetContentLen((xmlNodePtr) attrp, Z_STRVAL_P(newval),
>> Z_STRLEN_P(newval) + 1);
>> +       xmlNodeAddContentLen((xmlNodePtr) attrp, Z_STRVAL_P(newval),
>> Z_STRVAL_P(newval) + 1);
>>
>>        if (newval == &value_copy) {
>>                zval_dtor(newval);
>>
>>
>> This patch fix this cases:
>> $attr = new DOMAttr('test', 'foo&amp;bar');
>> var_dump($attr->value);
>> $attr->value = "foo&amp;bar";
>> var_dump($attr->value);
>>
>> but in this case we got empty value:
>> $doc = new DOMDocument;
>> $attr = $doc->createAttribute("foo");
>> $attr->value = "foo&amp;bar";
>> var_dump($attr->value);
>>
>> Can you explain why?
>> in first two cases wiil be call xmlNewProp libxml2 function, in last
>> case - xmlNewDocProp. Both this functions return same variable type.
>>
>>
>
> The patch is incorrect as its changing the wrong thing. The retrieval of the
> value is correct, it's the setting which has an issue. Setting the value
> using the value property should behave like setting the value via the
> DOMAttr constructor - input should be treated as literal text. Wont be
> changing the behavior of the value property due to BC.
>
> Rob
>
>

--
Evgeniy

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to