【问题标题】:Convert perl associative array to PHP array将 perl 关联数组转换为 PHP 数组
【发布时间】:2011-05-08 10:45:06
【问题描述】:

是否有一个 php 库可以用来将 perl 中的关联数组转换为 php 中的关联数组?如果没有,有什么推荐的方法吗?常用表达 ?一堆爆炸和内爆电话?

我想离开

my %arrayname = (
    key1 => "Value1",
    key2 => "Value2",
    key3 => "Value3",
...

$arrayname = array(
        "key1" => "Value1",
        "key2" => "Value2",
        "key3" => "Value3",

【问题讨论】:

  • 我想你的意思是$arrayname = array(…)。另外,您基本上是在尝试将 Perl 源代码解析为 PHP?
  • 很好,谢谢.. 现在会解决这个问题

标签: php perl code-generation


【解决方案1】:

如果您的服务器上有 Perl,则使用:

print 'Array(';
while (($key, $val) = each(%arrayname)) {
    print "'$key' => '$val',";
}
print ');';

你也可以看看PECL Perl package,这个库在PHP中集成了一个Perl解析器。

您可以将an online Perl interpreter 与示例代码一起使用并正常工作(最后只有一个额外的逗号)。

我创建了一个几乎可以工作的正则表达式。可以试试,不过要看Perl数组的结构:

preg_match_all(#\%(.+)\s=|\n(.+).*#);

示例数据:

my %arrayname = (
    key1 => "Value1",
    key2 => "Value2",
    key3 => "Value3"
)

您可以使用Regular Expression Test Tool 对其进行测试。

【讨论】:

  • +1 绝对同意用外语生成源代码比解析外语源代码更容易。
  • Perl 在这种情况下不是一个选项,我正在从 PHP 解析别人的 perl 配置文件。
  • @tchrist 我从来不知道 php 也是来自 M$,现在一切都说得通了:P
  • @sjobe:关键是只有微软系统忽略了包含 Perl;所有其他人都拥有它,即使是 $Bill 的囚徒也可以轻松获得它。期望使用除 perl 之外的任何东西来解析 Perl 是完全不合理的,无论如何这仍然是正确的。这也被证明是不可能的。所以做容易的事,而不是做不可能的事。
  • @sjobe 从理论上讲,在 Perl 中表示关联数组的内容的方法只有这么多,这是不正确。有无数种方法,尽管我让你来判断是ℵ₀、ℵ₁还是更糟。在您的离散情况下,可能性可能会更加有限,但我们无法知道这一点,因为问题空间尚未得到充分定义甚至描述。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
相关资源
最近更新 更多