好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

c链接php php调用c程序

很多站长朋友们都不太清楚c链接php,今天小编就来给大家整理c链接php,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 运行环境是在ubuntu下,前台是用PHP写的,后台用C语言写的,请问前台与后台怎么连接? 2、 . PHP中,哪个操作符用来连接字符串? 3、 用C写的一个socket数据包发送到80端口,用php怎么在服务器上接收到? 4、 php语言可执行c语言么? 5、 如何用PHP实现通过Web执行C/C++程序 6、 如何用c语言在windows平台上开发php extension 运行环境是在ubuntu下,前台是用PHP写的,后台用C语言写的,请问前台与后台怎么连接?

我不明白前台怎么可以用PHP来写,那个是来做后台用的,是服务器端的,用了PHP就可以不用C了,如果用C应该下载专用的模块,使APACHE可以支持C语言作为后台使用

. PHP中,哪个操作符用来连接字符串?

可以用split()函数,如下例子:

public

static

void

main(string

args[]){

string

str="a,b,c,d,e";

string

arr[]=str.split(",");//split函数的作用是用传进来的参数,把字符串拆分,并存到一个数组里

system.out.println(arr[0]);

system.out.println(arr[1]);

system.out.println(arr[2]);

system.out.println(arr[3]);

system.out.println(arr[4]);

}

你可以调试一下试试

:)

用C写的一个socket数据包发送到80端口,用php怎么在服务器上接收到?

set_time_limit(0);

//设置脚本超时时间;0表示不限制

$socket

=

socket_create(AF_INET,

SOCK_STREAM,SOL_TCP);

//创建一个套接字,参数太多,自己查手册

socket_bind($socket,'localhost',80);

绑定主机,端口

socket_listen($socket);

监听端口

$connection=socket_accept($socket)

接受连接

后面就可以通过socket_read()和socket_write();进行收发数据

最后用socket_close()销毁资源;

注意,这里需要直接通过php.exe直接来驱动,不要过服务器;

php语言可执行c语言么?

不能啊,PHP 跟C有各自运行的服务器,虽然说PHP是建立在C的基础上的,但是两者不可能相通的,不过可能会有高手知道,

如何用PHP实现通过Web执行C/C++程序

例如,我们可以写一个能够通过命令行还接收参数的C++简单程序,并命名为Sampleapp.然后我们能够按照下面的方式给他传递三个不同的参数 :

Sampleapp ?参数一 ?参数二 ?参数三

这个程序的功能是能输出传递给他的参数的个数和每个参数的值,然后我们可以用PHP脚本程序来执行编译好的C++程序。

利用你习惯的文本编辑器,新建一个名为Sampleapp.cpp的文件,再此文件中输入如下的代码:

#include <iostream.h>

int main(int argc, char* argv[])

{

cout << endl << "You passed "

<< argc-1 << " arguement"

<< (argc-1 == 1 ? "" : "s")

<< "." << endl;

cout << (argc-1 == 1 ? "This" : "These")

<< " arguement"

<< (argc-1 == 1 ? "" : "s")

<< " "

<< (argc-1 == 1 ? "is" : "are") << ": "

<< endl << endl;

for(int i = 1; i < argc; i++)

cout << "[" << i << "] "

<< argv[i] << endl;

return 0;

}

这个C++程序包含的程序的入口点:main(),main()函数带了两个参数:argc(命令行传入参数的个数)和argv(一个包含了所传参数实际值的字符型指针数组)。这个两个参数能被C++编译器自动捕获。

cout << endl << "You passed " << argc-1

<< " arguement"

<< (argc-1 == 1 ? "" : "s")

<< "." << endl;

这句话的意思是获得从执行命令行传入的参数的个数。Argv这个字符型指针数组是从0开始检索的,它至少包含一个实际的值(即本程序的路径和名称),这个值由C++编译器自动地附加上去。条件操作符“?”是用来判断命令行传入地参数是否多于一个。例如,如果命令行过传入两个参数,我们地程序将输出如下信息:

You passed 2 arguments.

cout << (argc-1 == 1 ?

"This" : "These")

<< " arguement"

<< (argc-1 == 1 ? "" : "s")

<< " "

<< (argc-1 == 1 ? "is" : "are")

<< ": " << endl << endl;

接下来,我们同样用条件操作符来输出另一句话。不过要记住,即使我们不从程序执行命令行传入任何参数,main函数地argv[]参数也包含一个值。同样地,如果我们从命令行传入两个参数给程序,程序将输出如下地信息:

These arguments are:

for(int i = 1;

i < argc; i++)

cout << "[" << i << "] "

<< argv[i] << endl;

最后,main函数逐一的输出命令行传入的每个参数,它用到了一个简单的for(;;)循环语句,这个函数能根据参数的个数将参数值一个一个的输出。假如我们传给程序两个参数“first”和second“, for循环输出的结果如下:

[1] ?first

[2] ?second

以上是关于这个C++程序的简单说明,它的功能十分简单,就是将命令行传入的参数用cout函数显示在输出屏幕上。

接下来,我们将编译这个。cpp文件,如果你在windows平台下,需要telnet到所使用的server上。在这里,我们使用大多Unix机器上都提供的G++编译器来编译这个源文件。不过为了确信你的机器安装了G++,你可以输入如下命令:which g++.如果G++已经安装了,Unix shell将显示出G++所在的全路径。如果没有安装,它将提示你说“command couldn‘t be found”。 你可以在这里下载到G++.在源文件所在的目录输入如下G++命令:

g++ -c sampleapp.cpp.

通过这个命令,我们就将。cpp文件编译成了包含机器代码的目标文件。通过 ls ?a命令,你可以发现在本目录下出现了一个新文件sampleapp.o,这就是。cpp源文件被编译成机器码的结果。不过我们最终想要的是一个可执行文件,因为我们还要输入如下的G++命令:

g++ sampleapp.cpp ?o sampleapp

这样我们就获得了一个名为sampleapp的可执行文件。不过注意的是,Unix下的可执行文件跟Windows不一样,它没有任何后缀。下面我们可以来检验一下程序执行的结果,如果如下命令:

sampleapp one -two /three

我们可以看到如下的执行结果:

You passed 3 arguments.

These arguments are:

[1] one

[2] ?two

[3] /three

现在,可执行的C++程序成生完毕,下面我们将生成一个能够通过web浏览器来访问这个程序的PHP教本程序。

如何用c语言在windows平台上开发php extension

如何使用C语言开发PHP扩展。

函数功能:php里面的整数是有符号数,其内部实现其实就是long,不是unsigned long。对于32位机器来说,php最大能表示的整数就是2^31-1了,一般在应用中碰到大于2^31-1而小于2^32的数就只能用字符串来表示了。对于mixed int_ext(string in)来说,如果字符串in表示的整数小于2^31-1,那么就返回整数,如果大于就返回字符串。

开发扩展步骤如下:(首先需要下载php的源码,这里下载的是php-5.3.14)

1,建立扩展骨架

[plain] view plaincopyprint?

01.cd php-5.3.14/ext

02ext_skel --extname=int_ext

cd php-5.3.14/ext

./ext_skel --extname=int_ext

2,修改编译参数

[plain] view plaincopyprint?

01.cd php-5.3.14/ext/int_ext

02.vi config.m4

cd php-5.3.14/ext/int_ext

vi config.m4去掉 PHP_ARG_ENABLE(int_ext, whether to enable int_ext support 和

[ --enable-int_ext Enable int_ext support]) 两行前面的dnl 修改后为:

[plain] view plaincopyprint?

01.1. dnl Otherwise use enable:

02.2. PHP_ARG_ENABLE(int_ext, whether to enable int_ext support,

03.3. dnl Make sure that the comment is aligned:

04.4. [ --enable-int_ext Enable int_ext support])

1. dnl Otherwise use enable:

2. PHP_ARG_ENABLE(int_ext, whether to enable int_ext support,

3. dnl Make sure that the comment is aligned:

4. [ --enable-int_ext Enable int_ext support])

3,编写C代码

[plain] view plaincopyprint?

01.cd php-5.3.14/ext/int_ext

02.vi php_int_ext.h

03.#在 PHP_FUNCTION(confirm_int_ext_compiled); 后面新增一行 PHP_FUNCTION(int_ext);

cd php-5.3.14/ext/int_ext

vi php_int_ext.h

#在 PHP_FUNCTION(confirm_int_ext_compiled); 后面新增一行 PHP_FUNCTION(int_ext);[plain] view plaincopyprint?

01.cd php-5.3.14/ext/int_ext

02.vi int_ext.c

03.#在PHP_FE(confirm_int_ext_compiled, NULL) 后面添加 PHP_FE(int_ext, NULL)添加后为:

04.1. zend_function_entry int_ext_functions[] = {

05.2. PHP_FE(confirm_int_ext_compiled, NULL) /* For testing, remove later. */

06.3. PHP_FE(int_ext, NULL) /* For testing, remove later. */

07.4. {NULL, NULL, NULL} /* Must be the last line in int_ext_functions[] */

08.5. };

cd php-5.3.14/ext/int_ext

vi int_ext.c

#在PHP_FE(confirm_int_ext_compiled, NULL) 后面添加 PHP_FE(int_ext, NULL)添加后为:

1. zend_function_entry int_ext_functions[] = {

2. PHP_FE(confirm_int_ext_compiled, NULL) /* For testing, remove later. */

3. PHP_FE(int_ext, NULL) /* For testing, remove later. */

4. {NULL, NULL, NULL} /* Must be the last line in int_ext_functions[] */

5. };

核心代码:

[plain] view plaincopyprint?

01.PHP_FUNCTION(int_ext)

02.{

03. char * str = NULL;

04. int str_len;

05. int argc = ZEND_NUM_ARGS();

06. if(zend_parse_parameters(argc TSRMLS_CC,"s",str,str_len) == FAILURE)

07. return ;

08. char * result;

09. int result_length = str_len;

10. result = (char *) emalloc(result_length + 1);

11. memcpy(result,str,result_length);

12. unsigned long result_num = strtoul(result, NULL, 10);

13. int sizeoflong sizeof(long);

14. unsigned long max_long = 1 << (sizeoflong * 8 -1);

15. if(result_num < max_long)

16. {

17. RETURN_LONG(result_num);

18. }

19. else

20. {

21. RESULT_STRINGL(result, result_length, 0);

22. }

23.}

PHP_FUNCTION(int_ext)

{

char * str = NULL;

int str_len;

int argc = ZEND_NUM_ARGS();

if(zend_parse_parameters(argc TSRMLS_CC,"s",str,str_len) == FAILURE)

return ;

char * result;

int result_length = str_len;

result = (char *) emalloc(result_length + 1);

memcpy(result,str,result_length);

unsigned long result_num = strtoul(result, NULL, 10);

int sizeoflong sizeof(long);

unsigned long max_long = 1 << (sizeoflong * 8 -1);

if(result_num < max_long)

{

RETURN_LONG(result_num);

}

else

{

RESULT_STRINGL(result, result_length, 0);

}

}

4,编译

[plain] view plaincopyprint?

01.cd php-5.3.14/ext/int_ext

02./usr/local/php/bin/pphpize

03configure --with-php-config=/usr/local/php/bin/php-config

04.make

05.make install

cd php-5.3.14/ext/int_ext

/usr/local/php/bin/pphpize

./configure --with-php-config=/usr/local/php/bin/php-config

make

make install

此时会产生一个so文件: /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/int_ext.so

修改php.ini 添加扩展extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"

[int_ext]

extension = int_ext.so

5,测试

[plain] view plaincopyprint?

01.$a = int_ext("12345678900");

02.var_dump($a);

03.$a = int_ext("123456789");

04.var_dump($a);

$a = int_ext("12345678900");

var_dump($a);

$a = int_ext("123456789");

var_dump($a);

结果输出:

[plain] view plaincopyprint?

01.string(11) "12345678900"

02.int(123456789)

关于c链接php的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于c链接php php调用c程序的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did226014
更新时间:2023-05-11   阅读:25次

上一篇: php文件显示 php 文件是否存在

下一篇:sql入库语句php sql php

相关资讯

最新资料更新

  • 1.php提取css文件 php引用css文件
  • 2.php接口和抽象类的区别 php抽象函数
  • 3.phpfpm出错 php报错信息
  • 4.php的if语句 php的if语句运用
  • 5.php字母循序排列 php字符串排序
  • 6.口袋源码php下载 口袋com
  • 7.php获取网页乱码 php网页显示乱码
  • 8.php是否为post的简单介绍
  • 9.php+rpush的简单介绍
  • 10.php爬淘宝图片 php爬取图片
  • 11.如何知道php密码 php确认密码
  • 12.手机打开php乱码 php乱码怎么办
  • 13.天津php公司的 天津程序员公司
  • 14.php获取js变量 php获取js变量值
  • 15.包含phpgetitems的词条
  • 16.析构函数php 析构函数不能指定返回类型
  • 17.php做vip解析 php解析器是什么
  • 18.php支付源码 php支付平台
  • 19.php交叉报表 ureport 交叉报表
  • 20.php显示字段内容 php限制显示字数

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]