- PHP_FUNCTION(strrev)
- {
- zend_string *str;
- char *e, *p;
- zend_string *n;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &str) == FAILURE) {
- return;
- }
- n = zend_string_alloc(ZSTR_LEN(str), 0); // 开辟新内存 (新字符串)
- p = ZSTR_VAL(n); // 新字符串启始位置
- e = ZSTR_VAL(str) + ZSTR_LEN(str); // 指向原始字符串结束位置 ('\0')
- while (--e>= ZSTR_VAL(str)) { //ZSTR_VAL(str), 原始字符串起始位置
- *p++ = *e;
- }
- *p = '\0'; // 字符串结束标志'\0'
- RETVAL_NEW_STR(n);
- }
来源: http://www.bubuko.com/infodetail-2619070.html