如何以编程方式编辑 'script' 元素中的 JSON-LD?

How to programmatically edit JSON-LD in 'script' elements?

我的服务器上有几个 HTML 文件,其中包含 JSON-LD script 元素。我正在寻找一种简单的方法来更新特定元素,而无需实际进入每个文件、更改代码并重新保存它。

具体来说,我想以编程方式遍历每个文件,找到 datePosted 属性 并将其值更新为当前日期,然后将文件保存在我的服务器上。

我最习惯使用 PHP 并且我对 HTML 文件做过类似的事情,但之前从未尝试过更新 JSON-LD。

想知道是否有人知道如何使用 JavaScript 或 PHP 执行此操作。如果不能,有人能给我指出与 JSON-LD 一起使用的良好解析器的正确方向吗?

样本JSON-LD:

 {
   "@context": "http://schema.org",
   "@type": "JobPosting",
   "datePosted": "2018-01-23"
 }

这很简单,只需要使用 json_decode 和 json_encode 即可:

$file = "file-path-to-json-ld";
$string = file_get_contents($file); // pulls the file
$json = json_decode($string, true); //creates a searchable array

var_dump($json); // just to see what elements and values are in the decoded array

$json['element-name-in-json-ld'] = "new-value-for-element";  //change any value you like

$updatedString = json_encode($json, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);  //re-encode backing into json

file_put_contents($file, $updatedString);  // put file back