Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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
Dynamic 内联JSON-LD脚本块中的动态值_Dynamic_Json Ld - Fatal编程技术网

Dynamic 内联JSON-LD脚本块中的动态值

Dynamic 内联JSON-LD脚本块中的动态值,dynamic,json-ld,Dynamic,Json Ld,我将数据存储在我选择的数据库中,并在html页面上回送,如下所示: <article id="content_left_article_1"> <h1 class="main-heading">Get in Touch</h1> <P><?php echo $rs_contactRows['ContactJobTitle']; ?>: <?php echo $rs_contactRows['Contact

我将数据存储在我选择的数据库中,并在html页面上回送,如下所示:

 <article id="content_left_article_1">
      <h1 class="main-heading">Get in Touch</h1>
      <P><?php echo $rs_contactRows['ContactJobTitle']; ?>: <?php echo $rs_contactRows['ContactName']; ?></P>
      <P>Email: <?php echo $rs_contactRows['ContactEmail']; ?></P>
      <P>Mobile: <?php echo $rs_contactRows['ContactTelephone']; ?></P>
 </article>


我很确定我错过了这个谜题的一些重要部分。如果有人能帮我找到解决这个问题的成功方法,我将不胜感激。

您可以用PHP输出JSON-LD,如下所示:

<script type="application/ld+json"> 
{
  "@context": "http://schema.org/",
  "@type": "Person",
  "name": "<?php echo htmlentities($rs_contactRows['ContactName'], ENT_QUOTES); ?>",
  "jobTitle": "<?php echo htmlentities($rs_contactRows['ContactJobTitle'], ENT_QUOTES); ?>",
  "url": "<?php echo htmlentities($rs_contactRows['ContactUrl'], ENT_QUOTES); ?>",
  "email": "<?php echo htmlentities($rs_contactRows['ContactEmail'], ENT_QUOTES); ?>",
  "telephone": "<?php echo htmlentities($rs_contactRows['ContactTelephone'], ENT_QUOTES); ?>"
}
</script>

旁注:输出HTML时应始终使用
htmlentities
,否则会有风险

马库斯的答案是理解基础的正确方法。 下一步可能是找到并使用为您生成LD-JSON的php库

例如,让我们看看json ld库

您可以通过更新
composer.json
:添加以下依赖项来安装它:

“要求”:{ “torann/json ld”:“^0.0”}

然后在您的页面中,您可以通过这种方式生成ld json(参见自述或单元测试):


注意:如果上下文需要改进,请根据您的需要打开一个数据库(我可以修复它),或者自己提交一个请求。

注意,我当然会这样做,但是……为什么您不以与HTML相同的方式为JSON-LD回显数据库中的数据呢?万一你不知道,你可以使用Microdata或RDFa(添加到你现有的HTML中)来代替JSON-LD(在一个单独的
脚本
元素中)。@unor-Well-Micro和RDF也不错,但推荐使用JSON-LD,尽管Google.com使用MicrodataI最终在php中构建了一个格式正确的大字符串,在html页面上调用它并只是回显它。它生成的源代码通过了谷歌的结构化数据测试检查。我不知道为什么我没有像第一个示例中那样考虑回显JSON脚本块中的值。我想我一直对爬虫会读到什么感到困惑。。。谢谢你明确的回答,我会尝试这两种选择,看看有什么感觉更好,它们都比我最终创造的怪物串更干净。
<script type='application/ld+json'> 
    {
      "@context": "http://www.schema.org",
      "@type": "person",
      "name": "$user.name + $user.surname",
    }
    </script>
<?php
   require('inc-conncvnl.php');
   require('inc-function-escapestring.php');
   $sql_contact = sprintf("SELECT * FROM tblcontact");
   $rs_contact = mysqli_query($vconncvnl, $sql_contact);
   $rs_contactRows = mysqli_fetch_assoc($rs_contact);
   $contactData = json_encode($rs_contactRows);
  echo $contactData;
?>
<script type="application/ld+json"> 
{
  "@context": "http://schema.org/",
  "@type": "Person",
  "name": "<?php echo htmlentities($rs_contactRows['ContactName'], ENT_QUOTES); ?>",
  "jobTitle": "<?php echo htmlentities($rs_contactRows['ContactJobTitle'], ENT_QUOTES); ?>",
  "url": "<?php echo htmlentities($rs_contactRows['ContactUrl'], ENT_QUOTES); ?>",
  "email": "<?php echo htmlentities($rs_contactRows['ContactEmail'], ENT_QUOTES); ?>",
  "telephone": "<?php echo htmlentities($rs_contactRows['ContactTelephone'], ENT_QUOTES); ?>"
}
</script>
$data = array(
  '@context' => 'http://schema.org/',
  '@type' => 'Person',
  'name' => $rs_contactRows['ContactName'],
  'jobTitle' => $rs_contactRows['ContactJobTitle'],
  'url' => $rs_contactRows['ContactUrl'],
  'email' => $rs_contactRows['ContactEmail'],
  'telephone' => $rs_contactRows['ContactTelephone']
);
echo json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
$context = \JsonLd\Context::create('news_article', [
    'headline' => 'Article headline',
    'description' => 'A most wonderful article',
    'mainEntityOfPage' => [
        'url' => 'https://google.com/article',
    ],
    'image' => [
        'url' => 'https://google.com/thumbnail1.jpg',
        'height' => 800,
        'width' => 800,
    ],
    'datePublished' => '2015-02-05T08:00:00+08:00',
    'dateModified' => '2015-02-05T09:20:00+08:00',
    'author' => [
        'name' => 'John Doe',
    ],
    'publisher' => [
        'name' => 'Google',
        'logo' => [
          'url' => 'https://google.com/logo.jpg',
          'width' => 600,
          'height' => 60,
        ]
    ],
]);

echo $context; // Will output the script tag