wenn ich die Quellen von PHP richtig lese, dann funktioniert die API Funktion strcmp() so:
ZEND_API int zend_binary_strcmp(const char *s1, uint len1, const char s2, uint len2) / {{{ */
{
int retval;retval = memcmp(s1, s2, MIN(len1, len2));
if (!retval) {
return (len1 - len2);
} else {
return retval;
}
}
/* }}} */
Ich würde sagen, das kommt aus zend\_builtin\_functions.c:
~~~c
/* {{{ proto int strcmp(string str1, string str2)
Binary safe string comparison */
ZEND_FUNCTION(strcmp)
{
zval **s1, **s2;
if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &s1, &s2) == FAILURE) {
ZEND_WRONG_PARAM_COUNT();
}
convert_to_string_ex(s1);
convert_to_string_ex(s2);
RETURN_LONG(zend_binary_zval_strcmp(*s1, *s2));
}
/* }}} */
Afaik steht alles was PHP_FUNCTION bzw. ZEND_FUNCTION heisst für PHP (sprich für den Benutzer) als Funktion zur Verfügung.
http://php.net/manual/en/internals2.ze1.zendapi.php
http://www.php.net/manual/en/internals2.funcs.php