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&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&bar'); >> var_dump($attr->value); >> $attr->value = "foo&bar"; >> var_dump($attr->value); >> >> but in this case we got empty value: >> $doc = new DOMDocument; >> $attr = $doc->createAttribute("foo"); >> $attr->value = "foo&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