使用系统在PHP中嵌入cgi的问题

时间:2009-12-08 14:04:25

标签: php

您好我正在使用php系统嵌入像这样的cgi脚本

<?php echo system('./cgi-bin/rebol-include.cgi'); ?>

问题是我的cgi-script写道

print "content-type: text/html^/"

以便PHP显示

"content-type: text/html"

在html页面上方。这是一个不需要的人工制品,删除它的最佳方法是什么,知道整个html页面是从嵌入php的cgi返回的?

3 个答案:

答案 0 :(得分:1)

系统可以用后面的刻度“”替换,后面的刻度可以插入到子串中。

所以

<?= substr(`./cgi-bin/rebol-include.cgi`, strlen('content-type: text/html^/')) ?>

这应该为您提供“内容类型”之后的所有内容。

答案 1 :(得分:1)

不是在脚本中打印出内容,而是将其作为字符串返回。然后echo实际上会完成它的工作。 还可以使用 strip_tags()解析整个内容,或者如果想要删除HTML,则可以解析。

答案 2 :(得分:1)

您是否尝试过使用virtual()而不是system()?

  

virtual()是特定于Apache的   功能类似于    在   mod_include负责。它执行Apache   子请求。它很有用   包括CGI脚本或.shtml文件,   或者你要解析的任何其他内容   通过Apache。请注意,对于CGI   脚本,脚本必须生成有效   CGI标题。至少这意味着   它必须生成Content-Type   报头中。

请参阅http://php.net/manual/en/function.virtual.php