Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP错误地将JSON编码到文件_Php_Html_Json - Fatal编程技术网

PHP错误地将JSON编码到文件

PHP错误地将JSON编码到文件,php,html,json,Php,Html,Json,我正在解决这个问题。在preg_从PHP中分离后,我得到了和数组。我想要的是转换成JSON。我尝试了几乎所有的方法,但代码仍然写得很糟糕,似乎根本没有编码。这是我的部分代码 if(isset($_POST['SubmitButton'])){ $content = $_POST['content']; $split = preg_split('/(\/>)/', $_POST['content']); $json = json_encode($split, true

我正在解决这个问题。在preg_从PHP中分离后,我得到了和数组。我想要的是转换成JSON。我尝试了几乎所有的方法,但代码仍然写得很糟糕,似乎根本没有编码。这是我的部分代码

if(isset($_POST['SubmitButton'])){
    $content = $_POST['content'];
    $split = preg_split('/(\/>)/', $_POST['content']);
    $json = json_encode($split, true);
    file_put_contents("newfile.json", $json);
    $message = "<xmp>".$content."</xmp>";  
}
原始数组如下所示:

Array ( [0] => <path d="m34.511 143.4v3.0302l54.101-0.63086v-2.078z" points="34.510773,146.42924 88.611514,145.79838 88.611514,143.72037 34.510773,143.39908 " fill="#353564" [1] => <path d="m34.511 146.43 78.119 2.1017 56.193-2.4552-80.211-0.27738z" points="112.6299,148.53093 168.82266,146.07576 88.611514,145.79838 34.510773,146.42924 " fill="#afafde" [2] => <path d="m88.612 143.72 80.211-1.5957v3.9511l-80.211-0.27738z" points="168.82266,142.1247 168.82266,146.07576 88.611514,145.79838 88.611514,143.72037 " fill="#e9e9ff" [3] => <path d="m34.511 143.4 78.119-4.6834 56.193 3.409-80.211 1.5957z" points="112.6299,138.71569 168.82266,142.1247 88.611514,143.72037 34.510773,143.39908 " fill="#4d4d9f" [4] => <path d="m112.63 138.72v9.8152l56.193-2.4552v-3.9511z" points="112.6299,148.53093 168.82266,146.07576 168.82266,142.1247 112.6299,138.71569 " fill="#d7d7ff" [5] => <path d="m34.511 143.4 78.119-4.6834v9.8152l-78.119-2.1017z" points="112.6299,138.71569 112.6299,148.53093 34.510773,146.42924 34.510773,143.39908 " fill="#8686bf" [6] => <path d="m81.675 70.138v77.656l19.018-0.51308v-65.842z" points="81.675079,147.79421 100.6926,147.28113 100.6926,81.438896 81.675079,70.138158 " fill="#353564" [7] => <path d="m81.675 147.79 44.367 1.2456 17.465-1.0002-42.814-0.75847z" points="126.04182,149.03978 143.50669,148.0396 100.6926,147.28113 81.675079,147.79421 " fill="#afafde" [8] => <path d="m100.69 81.439 42.814-27.133v93.734l-42.814-0.75847z" points="143.50669,54.305844 143.50669,148.0396 100.6926,147.28113 100.6926,81.438896 " fill="#e9e9ff" [9] => <path d="m81.675 70.138 44.367-40.744 17.465 24.912-42.814 27.133z" points="126.04182,29.393818 143.50669,54.305844 100.6926,81.438896 81.675079,70.138158 " fill="#4d4d9f" [10] => <path d="m126.04 29.394v119.65l17.465-1.0002v-93.734z" points="126.04182,149.03978 143.50669,148.0396 143.50669,54.305844 126.04182,29.393818 " fill="#f6ff17" [11] => <path d="m81.675 70.138 44.367-40.744v119.65l-44.367-1.2456z" points="126.04182,29.393818 126.04182,149.03978 81.675079,147.79421 81.675079,70.138158 " fill="#8686bf" [12] => )
数组([0]=>)

请你告诉我哪里出错了好吗?

有一个问题似乎是由于不接受
true
参数引起的。相反,它在该位置使用选项标志,在您的情况下,lexer将其解析为
1
,与
JSON\u HEX\u标记
选项标志相同。结果是
\u003C
而不是
您想要的结果/输出是什么?总之是正常的JSON。。没关系。。我认为UTF-8的编码语言不好,我不确定。。所需的结果可以是[0:{path….}..主要是它将包含JSON拥有的所有内容:)它有什么问题?看起来不错?用所需的输出更新您的问题,您的代码可能无法反映您所需的意图,请参阅我的答案。我想您可能希望将XML属性分解为JSON属性,但我想确定。
Array ( [0] => <path d="m34.511 143.4v3.0302l54.101-0.63086v-2.078z" points="34.510773,146.42924 88.611514,145.79838 88.611514,143.72037 34.510773,143.39908 " fill="#353564" [1] => <path d="m34.511 146.43 78.119 2.1017 56.193-2.4552-80.211-0.27738z" points="112.6299,148.53093 168.82266,146.07576 88.611514,145.79838 34.510773,146.42924 " fill="#afafde" [2] => <path d="m88.612 143.72 80.211-1.5957v3.9511l-80.211-0.27738z" points="168.82266,142.1247 168.82266,146.07576 88.611514,145.79838 88.611514,143.72037 " fill="#e9e9ff" [3] => <path d="m34.511 143.4 78.119-4.6834 56.193 3.409-80.211 1.5957z" points="112.6299,138.71569 168.82266,142.1247 88.611514,143.72037 34.510773,143.39908 " fill="#4d4d9f" [4] => <path d="m112.63 138.72v9.8152l56.193-2.4552v-3.9511z" points="112.6299,148.53093 168.82266,146.07576 168.82266,142.1247 112.6299,138.71569 " fill="#d7d7ff" [5] => <path d="m34.511 143.4 78.119-4.6834v9.8152l-78.119-2.1017z" points="112.6299,138.71569 112.6299,148.53093 34.510773,146.42924 34.510773,143.39908 " fill="#8686bf" [6] => <path d="m81.675 70.138v77.656l19.018-0.51308v-65.842z" points="81.675079,147.79421 100.6926,147.28113 100.6926,81.438896 81.675079,70.138158 " fill="#353564" [7] => <path d="m81.675 147.79 44.367 1.2456 17.465-1.0002-42.814-0.75847z" points="126.04182,149.03978 143.50669,148.0396 100.6926,147.28113 81.675079,147.79421 " fill="#afafde" [8] => <path d="m100.69 81.439 42.814-27.133v93.734l-42.814-0.75847z" points="143.50669,54.305844 143.50669,148.0396 100.6926,147.28113 100.6926,81.438896 " fill="#e9e9ff" [9] => <path d="m81.675 70.138 44.367-40.744 17.465 24.912-42.814 27.133z" points="126.04182,29.393818 143.50669,54.305844 100.6926,81.438896 81.675079,70.138158 " fill="#4d4d9f" [10] => <path d="m126.04 29.394v119.65l17.465-1.0002v-93.734z" points="126.04182,149.03978 143.50669,148.0396 143.50669,54.305844 126.04182,29.393818 " fill="#f6ff17" [11] => <path d="m81.675 70.138 44.367-40.744v119.65l-44.367-1.2456z" points="126.04182,29.393818 126.04182,149.03978 81.675079,147.79421 81.675079,70.138158 " fill="#8686bf" [12] => )
print_r(json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT));
[
    "<path d=\"m34.511 143.4v3.0302l54.101-0.63086v-2.078z\" points=\"34.510773,146.42924 88.611514,145.79838 88.611514,143.72037 34.510773,143.39908 \" fill=\"#353564\"",
    "<path d=\"m81.675 70.138 44.367-40.744v119.65l-44.367-1.2456z\" points=\"126.04182,29.393818 126.04182,149.03978 81.675079,147.79421 81.675079,70.138158 \" fill=\"#8686bf\""
]
if (isset($_POST['SubmitButton'])) {
    //first make the post content valid XML
    $xml = '<xmp>' . $_POST['content'] . '</xmp>';

    //use the DOMDOcument class to load the XML string 
    //add your own error handling
    $doc = new DOMDocument();
    $doc->loadXML($xml);
    $array = []; //placeholder to store the data

    //iterate over the <path/> tag elements
    foreach ($doc->getElementsByTagName('path') as $node) {
        $attributes = [];
        //convert the attributes into an associative array by attribute name
        foreach ($node->attributes as $attribute) {
            $attributes[$attribute->name] = $attribute->value;
        }
        //store the tag and attributes into array
        $array[] = (object) [
            $node->tagName => $attributes
        ];
    }

    $json = json_encode($array, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT);
    file_put_contents(__DIR__ . '/newfile.json', $json);
}
<path d="m34.511 143.4v3.0302l54.101-0.63086v-2.078z" points="34.510773,146.42924 88.611514,145.79838 88.611514,143.72037 34.510773,143.39908 " fill="#353564"/>
<path d="m34.511 146.43 78.119 2.1017 56.193-2.4552-80.211-0.27738z" points="112.6299,148.53093 168.82266,146.07576 88.611514,145.79838 34.510773,146.42924 " fill="#afafde"/>
[
    {
        "path": {
            "d": "m34.511 143.4v3.0302l54.101-0.63086v-2.078z",
            "points": "34.510773,146.42924 88.611514,145.79838 88.611514,143.72037 34.510773,143.39908",
            "fill": "#353564"
        }
    },
    {
        "path": {
            "d": "m34.511 146.43 78.119 2.1017 56.193-2.4552-80.211-0.27738z",
            "points": "112.6299,148.53093 168.82266,146.07576 88.611514,145.79838 34.510773,146.42924",
            "fill": "#afafde"
        }
    }
]