0

我有 1 个仅包含关联数组的 javascript 文件。(此文件将由测试工具生成,因此不允许更改此 r)。我需要在 php 文件中使用该数组的值,以便我可以将这些值存储在数据库中。请指定如何执行此操作?

4

2 回答 2

1

你最好的选择是使用 JSON。PHP 本身不支持 Javascript,但 JSON 是许多平台都理解的 Javascript 的一个常见子集(这意味着如果您需要在其他地方重用这些数据,它将得到更广泛的支持)。

特别是,您从文件中读取字符串,然后使用 json_decode:

$json_str = file_get_contents("json_file.js");
json_vals = json_decode($json_str);

根据您的评论:

<?php
    $json_orig = <<<'json_oend'
var mime_samples =
    [ {
        'mime': 'application/xhtml+xml',
        'samples': [{
            'url': 'demo.testfire.net/',
            'dir': '_m0/0', //it is for show trace
            'linked': 2,
            'len': 9645 }] },
    {
        'mime': 'text/html',
        'samples': [{
            'url': 'demo.testfire.net/.htaccess.aspx--\x3e\x22\x3e\x27\x3e\x27\x22\x3csfi000??001v275174\x3e',
            'dir': '_m1/0', //it is for show trace
            'linked': 2,
            'len': 34 }] } ];
json_oend;
    $json_str = preg_replace("/var[^=]*=/m", "", $json_orig);
    $json_str = preg_replace("/;.*/m", "", $json_str);
    $json_str = preg_replace("/'/m", "\"", $json_str);
    $json_str = preg_replace("/\\/\\/.*/", "", $json_str);
    $json_str = preg_replace("/\\\\x/", "\\u00", $json_str);
    $json_val = json_decode($json_str, true);

    for($i=0; $i<count($json_val); ++$i)
    {
        $samples = $json_val[$i]["samples"];
        for($j=0; $j<count($samples); ++$j)
        {
            echo "$i.$j\n";
            echo $samples[$j]['url'];
            echo "\n";
        }
    }
?>
于 2012-10-10T08:42:10.927 回答
1

PHP 可以通过 V8 引擎运行 JavaScript ,尽管您可能必须安装它。您可以使用它来执行您的 JavaScript 并(希望)提取数据。


或者,编写一个加载 JavaScript 的网页,然后通过 Ajax 将其中的数据提交给 PHP 脚本。

于 2012-10-10T08:44:16.027 回答