【问题标题】:Emulating PHP page to get response in C#模拟 PHP 页面以在 C# 中获得响应
【发布时间】:2010-09-21 04:06:23
【问题描述】:

我浏览了互联网,但没有找到我的答案...由于我的想法已经不多了,我希望能在这个问题上提供一些帮助。 所以这里是: 我有一些 PHP 代码采用文件路径并返回一堆我需要的信息。 我有源代码(它是开源的),而且我知道我的 C#。 我的问题是我希望能够从 C# 应用程序中使用这个 PHP 代码,离线,模拟 PHP 代码。

有什么想法吗?

谢谢。

【问题讨论】:

  • 为什么必须在 C# 中?
  • 因为我很容易用 C# 来做这个应用程序,但我需要 php 文件中的算法。
  • 从您下面的 cmets 中,我看到您确实在寻找有关如何解析 Starcraft 2 重播文件的信息,而不仅仅是一般文件信息。您应该将此添加到您的问题帖子中。
  • 嗯,是的……不,我实际上已经有了解析回放的工具,我只需要让 PHP 在 C# 中运行

标签: c# php emulation


【解决方案1】:

如果你真的需要,你总是可以通过生成一个进程从 C# 启动 PHP 解释器。我将把细节留给 MSDN。不过,更好的办法是手动将 PHP 翻译成 C#。

【讨论】:

  • 手工翻译 PHP 到 C# 是我最后的手段,我想在我做之前寻求更直接的方法来处理这个问题......
【解决方案2】:

您可以在本地计算机上设置 PHP 服务器,并使用使用 c# 创建的 HTTP 请求(例如使用 WebRequest 对象)调用文件。这满足了离线工作的要求,并且由于您拥有 PHP 代码,因此您可以进行微小的修改以适应您需要传递给它的任何参数。

但是除非这是针对受控环境中的孤立案例,否则我不建议这样做。

如果这是为了分发给用户机器,那将是 a) 不切实际的部署和 b) 维护的噩梦。如果您在服务器上运行并且不能用 c# 重写 PHP,那么它应该可以完成工作。

【讨论】:

  • 是的,它是为了分发,在最后阶段=X
  • .Net 4.0 中的 DLR(动态语言运行时)可能存在一些可能性。这允许更强大的类型语言(如 c#)与解释语言(如 PHP)进行交互。我找不到具体的例子,但这可能是您开始的好地方。
【解决方案3】:

这听起来像是希望

  1. 将 PHP 代码翻译成 C#
  2. 从 .NET 调用 PHP 代码
  3. ???

我不认为仿真是您正在寻找的术语,确切地说。

如果您可以链接到 PHP 代码(如果是 OSS,是否有提供更多信息的网站?)或将其粘贴到此处,我们可能会让您知道处理此问题的最佳方法。

【讨论】:

  • 我试图模仿的PHP页面就是上面那个
  • 奇怪,我可以点击我这边的链接 oO
  • 抱歉,我错过了页面上指向源代码的链接。忽略我的评论:-/
  • @FatalBaboon 所以.. 这比听起来要复杂一些。将它翻译成 C# 可能需要付出很大的努力(而且那里也有 C?)。蒂姆的建议可能会是最有帮助的。
【解决方案4】:

如果您不想将 PHP 代码翻译成 C#,那么您必须调用 PHP 解释器。

首先,查看您将使用的 PHP 代码的许可证。当我早些时候查看代码时,我注意到除了一个 PHP 文件之外,所有文件都具有 GNU GPL 许可证。 GNU GPL 应该可以满足您的需求,但如果您还没有这样做,我建议您查看 GNU GPL。在继续之前,您还应该查看应该将什么许可证应用于最后一个文件。

其次,重写入口文件。有问题的文件是upload_file.php。此文件将其他文件作为包含加载,解析 SC2 重播文件,并生成供 Web 浏览器使用的输出。您只需要重写此文件即可将其输出的简化版本输出到控制台。您可以让它从命令行参数接收重播文件的名称。其他标记为 GNU GPL 的文件可以直接复制到您的项目中。在这里我也应该说,可能已经有控制台版本了。花点时间四处看看。

第三,编写一个 C# 应用程序。调用 PHP 解释器,告诉它要解释什么文件,以及要解析的重播文件的名称。您需要将控制台输出从您的 PHP 实例重定向到您的 C# 代码才能读取输出。

第四,读取输出。

第五,解析输出以在您的 C# 应用程序中使用。

【讨论】:

  • 感谢您的回答 1) 我知道许可证,我没问题。 2)我对要重写的文件得出了相同的结论,但是我对PHP一无所知=X我什至不知道PHP可以写入控制台。在选择这个 PHP 开源项目作为我的最佳选择之前,我环顾四周。据我了解,我需要重写前 63 行,其中包含 javascript(不知道那部分是做什么的)和一些生成表单的 HTML。 PHP 中唯一的部分是说不要上传超过 4Mo 的文件(如果我没看错的话)。
  • 最后但同样重要的是,您谈到“PHP 解释器”,是指 Phalanger 吗? (据我所知,他们使用/制作了 phpc)。 Part 3/4/5 完全没问题。
  • PHP 解释器是指官方的 PHP-CLI。 PHP-CLI 中的 echo 语句写入控制台输出。我听说有可用的 PHP 编译器,但还没有研究过。我不确定在这种情况下使用 Phalanger 会如何改变你必须做的事情。
【解决方案5】:

旧线程,但认为它可以使用答案。

您可以使用 codeplex Phalanger。 http://phalanger.codeplex.com/ 它允许您获取现有的 php 文件并将它们编译为 .net

【讨论】:

  • 在这个帖子之后我尝试使用 Phalanger 一段时间,结果并不令人满意。所以我去重写代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 2017-11-22
  • 2022-01-04
  • 1970-01-01
  • 2012-02-04
  • 1970-01-01
相关资源
最近更新 更多