/* }}} */
-
-long dom_utf16Length (xmlChar *utf8str) {
- long len = 0L, i;
- char c;
-
- for (i = 0L; (c = utf8str[i]) != '\0'; i++)
- if ((c & 0xf8) == 0xf0)
- len += 2L;
- else if ((c & 0xc0) != 0x80)
- len++;
-
- return len;
-}
-
/* {{{ proto length unsigned long
readonly=yes
URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-7D61178C
ALLOC_ZVAL(*retval);
content = xmlNodeGetContent(nodep);
- length = dom_utf16Length(content);
+ length = xmlUTF8Strlen(content);
+
xmlFree(content);
ZVAL_LONG(*retval, length);
RETURN_FALSE;
}
- length = xmlStrlen(cur);
+ length = xmlUTF8Strlen(cur);
if (offset < 0 || count < 0 || offset > length) {
xmlFree(cur);
count = length - offset;
}
- substring = xmlStrsub(cur, offset, count);
+ substring = xmlUTF8Strsub(cur, offset, count);
xmlFree(cur);
if (substring) {
RETURN_FALSE;
}
- length = xmlStrlen(cur);
+ length = xmlUTF8Strlen(cur);
if (offset < 0 || offset > length) {
xmlFree(cur);
RETURN_FALSE;
}
- first = xmlStrndup(cur, offset);
- second = xmlStrdup(cur + offset);
+ first = xmlUTF8Strndup(cur, offset);
+ second = xmlUTF8Strsub(cur, offset, length - offset);
xmlFree(cur);
xmlNodeSetContent(node, first);
RETURN_FALSE;
}
- length = xmlStrlen(cur);
+ length = xmlUTF8Strlen(cur);
if (offset < 0 || count < 0 || offset > length) {
xmlFree(cur);
}
if (offset > 0) {
- substring = xmlStrsub(cur, 0, offset);
+ substring = xmlUTF8Strsub(cur, 0, offset);
} else {
substring = NULL;
}
count = length - offset;
}
- second = xmlStrdup(cur + offset + count);
+ second = xmlUTF8Strsub(cur, offset + count, length - offset);
substring = xmlStrcat(substring, second);
xmlNodeSetContent(node, substring);
RETURN_FALSE;
}
- length = xmlStrlen(cur);
+ length = xmlUTF8Strlen(cur);
if (offset < 0 || count < 0 || offset > length) {
xmlFree(cur);
}
if (offset > 0) {
- substring = xmlStrsub(cur, 0, offset);
+ substring = xmlUTF8Strsub(cur, 0, offset);
} else {
substring = NULL;
}
if ((offset + count) > length) {
- count = 0;
+ count = length - offset;
}
if (offset < length) {
- second = xmlStrdup(cur + offset + count);
+ second = xmlUTF8Strsub(cur, offset + count, length - offset);
}
substring = xmlStrcat(substring, arg);
}
/* }}} */
+static zval **dom_property_get_ptr(zval *object, zval *member TSRMLS_DC)
+{
+ zval **prop_ptr;
+ zval *property;
+
+ property = dom_read_property(object, member, 0 TSRMLS_CC);
+ prop_ptr = &property;
+
+ return prop_ptr;
+}
+
zend_module_entry dom_module_entry = {
STANDARD_MODULE_HEADER,
"dom",
memcpy(&dom_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
dom_object_handlers.read_property = dom_read_property;
dom_object_handlers.write_property = dom_write_property;
+ dom_object_handlers.get_property_ptr = dom_property_get_ptr;
zend_hash_init(&classes, 0, NULL, NULL, 1);