【问题标题】:Can anyone explain this code? How could it be emulated with PHP? [closed]谁能解释这段代码?如何用 PHP 模拟它? [关闭]
【发布时间】:2023-04-10 20:36:01
【问题描述】:

所以我正在尝试使用一些用 pike 编写的代码来制作一个相对复杂的 php 脚本。完整的源代码可在此处获得:http://www.text-image.com/pic2html.pike。这只是一种学习体验,因为我不会发布它。但是我想让它工作!

int main(int arg 

            if (temp > 10485760) {
                werr("Image too large (10MB limit).");
                return 0;
        }

        string info = Stdio.stdin.read(temp);

        if (strlen(info) < temp) {
                werr("Insufficient data uploaded.");
                return 0;
        }

我理解第 3 行的 if 语句。“如果整数 'temp' 大于 10485760,则使用字符串执行函数 'werr' ('Image too large (10MB limit.');

第8行的if语句我也理解了,和第一个语句很相似。

我不明白的是

string info = Stdio.stdin.read(temp);

我不明白

int main(int arg 

如果我不得不猜测,我会说函数的结果将应用于一个名为“main”的整数?是对的吗?这怎么能在php中模拟?

感谢您的宝贵时间!

【问题讨论】:

  • 这看起来像 C++ 代码。
  • 是的,它是一种叫做“Pike”的东西,它与 C++ 非常非常相似。好像没有人用过,不过和 C++ 太像了,相信会有人知道的!
  • 它是 pike,一种具有 c-systax 的强大脚本语言:pike.lysator.liu.se 你已经截断了第一行。它应该是 int main(int argc, array(string) argv) {,一个用于 main 函数的普通 c 类头文件。在argc 中,您获得传递给程序的参数数量,在argv 中,您获得参数的值。在 PHP 中你不需要它。 string info = Stdio.stdin.read(temp);标准输入(CGI 数据)中的 temp 字节数读取到变量 info 中,然后用 object msg = MIME.Message( info, headies ); 解码,PHP 会自动执行此操作。

标签: php web-applications pike


【解决方案1】:

我不知道这种语言,但似乎与 C++ 非常相似。

int main(int arg 

是 PHP 中不存在的 main 函数的开头,因此您可以省略它。在编译语言中,主函数是程序启动时调用的第一个函数。在 PHP 中,请求的文件只是每行执行一次。

还有:

string info = Stdio.stdin.read(temp);

感觉像:

std::string info;
std::cin >> info;

刚刚从标准输入流中读取。 PHP 中没有 iostream 之类的东西,输入是 cookie、POST、GET、DELETE、PUT 等,并且是根据请求进行的。

【讨论】:

    【解决方案2】:

    这看起来像 C++ 代码(amybe Java 或 C#?但我不知道任何一个 htose)。所有 C 和 C++ 程序都必须只有一个函数,称为 main()。当从 C 或 C++ 代码编译的 .exe 运行时,从那里开始执行。它返回一个整数,以便调用它的任何内容都可以判断它是否成功。

    werr 调用可能是一些“写入错误”的孩子。

    第 8 行:string info = Stdio.stdin.read(temp); 正在使用标准 i/o 例程(在 stdio 中)从标准输入 (stdin) 读取一行并将其存储在一个名为 info 的变量中,该变量属于字符串类型。

    要转换为 PHP,请尝试谷歌搜索 ;-)

    提示:您可能需要一个表单(另请参阅this question)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-16
      • 2017-04-22
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多