Rolland,

+PHPAPI void php_unify_string_types(zval **p, zval **q TSRMLS_DC)
+{
+    if (p == NULL || q == NULL) {
+        return;
+    }
+
+    if (Z_TYPE_PP(p) == IS_UNICODE) {
+        if (Z_TYPE_PP(q) == IS_BINARY) {
+            convert_to_binary_ex(p);
+        } else {
+            convert_to_unicode_ex(q);
+        }
+    } else if (Z_TYPE_PP(p) == IS_BINARY) {
+        convert_to_binary_ex(q);
+    } else {
+        if (Z_TYPE_PP(q) == IS_BINARY) {
+            convert_to_binary_ex(p);
+        } else {
+            convert_to_string_ex(q);
+        }
+    }
+}
+/* {{{ */

There is an API function zend_get_best_string_type(). It will figure out the optimal string type based on the strings passed to it. Then you can use that optimal type to unify them via convert_to_explicit_type() function.

+    if (Z_TYPE_PP(str) == IS_UNICODE) {
+        i = 0; str_codepts = 0;
+        while (i < Z_USTRLEN_PP(str)) {
+            U16_FWD_1(Z_USTRVAL_PP(str), i, Z_USTRLEN_PP(str));
+            str_codepts++;
+        }
+    } else {
+        str_codepts = Z_STRLEN_PP(str);
+    }

u_countChar32() again would help.

-Andrei


On Sep 7, 2005, at 10:05 PM, Rolland Santimano wrote:

<rolland-20050908010538.txt>

--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to