在php中使用zend函数时,如何传递字符串、int、char并打印它们?
我正在尝试创建php扩展名,其中我将字符串、int、char传递给我的.cpp文件。.cpp文件中的我的zend函数如下所示:在php中使用zend函数时,如何传递字符串、int、char并打印它们?,php,visual-c++,php-extension,Php,Visual C++,Php Extension,我正在尝试创建php扩展名,其中我将字符串、int、char传递给我的.cpp文件。.cpp文件中的我的zend函数如下所示: #define PHP_COMPILER_ID "VC9" #include "php.h" ZEND_FUNCTION(use_html); zend_function_entry use_functions[] = { ZEND_FE(use_html, NULL) {NULL, NULL, NULL} }; zend_module_e
#define PHP_COMPILER_ID "VC9"
#include "php.h"
ZEND_FUNCTION(use_html);
zend_function_entry use_functions[] =
{
ZEND_FE(use_html, NULL)
{NULL, NULL, NULL}
};
zend_module_entry use_html_module_entry =
{
STANDARD_MODULE_HEADER,
"Use Html",
use_functions,
NULL, NULL, NULL, NULL, NULL,
"1.0.0-tutorial",
STANDARD_MODULE_PROPERTIES
};
ZEND_GET_MODULE(use_html);
ZEND_FUNCTION(use_html)
{
int useHtml;
char *ch;
int a=10,b=120,c;
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "/", &useHtml) == FAILURE)
{
E_ERROR;
return;
}
c=a+b;
php_printf("sum is",&useHtml);
php_printf("This string is %d :" + useHtml );
if(useHtml==1)
{
php_printf("\n This string uses <a href='#'>Html</a>");
}
else
{
php_printf("This string does not Html");
}
return;
}
( ! ) SCREAM: Error suppression ignored for
( ! ) Warning: use_html() expects parameter 1 to be unknown, integer given in D:\wamp\www\test.php on line 3
Call Stack
# Time Memory Function Location
1 0.0006 138008 {main}( ) ..\test.php:0
2 0.0006 138352 use_html ( ) ..\test.php:3
关于这一部分:
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "/", &useHtml) == FAILURE)
必须指定“/”所在的预期参数类型。
要接受每种类型,可以使用“z”。但请看一下,要访问char*、long和double值,您必须使用宏或将值转换为字符串,以便进行此类签出。我尝试使用“s”表示字符串,“l”表示长时间,但即使这样也会产生同样的问题!如何加载模块?即使是错误信息还是一样?谢谢回复。我正在从test.php文件加载模块。我已经创建了.dll并与之链接!当我取Long int并通过时,使用_html(1);int valeus,那么它工作得很好,但是当我打印它时,它会给出一些垃圾值。我尝试使用php_printf打印(“这个字符串是%d:+useHtml);,php_printf(“此字符串为%ld:+useHtml”);但却给了同样的垃圾价值!假设我已经很久了;char*s;内苏伦;zval*param;如果(zend_parse_parameters(zend_NUM_ARGS()TSRMLS_CC,“lsz”,&l,&s,&s_len,¶m)=FAILURE){return;}然后我想打印每个元素,我该怎么做?'php_printf(“这个字符串是%d:+useHtml);”?你是说“php_printf”(“这个字符串是%d:,useHtml);”,正确的?您可以查看php_var_dump()源代码,了解如何通过zval指针处理类型:
if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "/", &useHtml) == FAILURE)