AZALEA 项目中我需要获取 $_SERVER['SCRIPT_NAME']
的 dirname
,Zend 提供了 zend_dirname
方法来修改传入的字符串
zval *server, *field;
zstring *baseUri = NULL;
server = zend_hash_str_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER") - 1);
if (Z_TYPE_P(server) == IS_ARRAY) {
if ((field = zend_hash_str_find(Z_ARRVAL_P(server), AZALEA_STRING("SCRIPT_NAME"))) &&
Z_TYPE_P(field) == IS_STRING) {
// 获取到了 $_SERVER['SCRIPT_NAME']
baseUri = zend_string_dup(Z_STR_P(field), 0);
// dirname 修改 baseUri
ZSTR_LEN(baseUri) = zend_dirname(ZSTR_VAL(baseUri), ZSTR_LEN(baseUri));
}
}
if (!baseUri) {
baseUri = zend_string_init("/", sizeof("/") - 1, 0); // 默认
}
zend_string_release(baseUri); // 最后不要忘记了释放
网友评论