PHP错误地将JSON编码到文件
我正在解决这个问题。在preg_从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
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"
}
}
]