如何用特定的微数据标签替换下划线

时间:2014-08-11 17:18:06

标签: php microdata

我一直在配置我的PHP站点以使用微数据来显示用户名。

我的用户使用基于下划线的语法将给定名称其他名称分开:

example:      Mark        _Jonas_       Flash
syntax:  additionalName _givenName_ additionalName

我希望输出前面的内容:

<span itemprop="additionalName">Mark</span> <span itemprop="givenName">Jonas</span> <span itemprop="additionalName">Flash</span>

扭曲:

  1. 这些不同类型的名称可以是任何顺序和
  2. 未指定名称数量。
  3. 问题:如何使用PHP进行此类转换?

1 个答案:

答案 0 :(得分:0)

感谢马里奥指出我正确的方向!我终于明白了。代码如下。

<?php
$names = 'First _Second_ Thörd Marco-Polo';
$out = preg_replace_callback('/[^\s]+/',
  function ($matches) {
    $name = $matches[0];
    $needle = '_';
    $length = strlen($needle);
    // Check if the name is given name
    if ((substr($name, 0, $length) === $needle) && (substr($name, -$length) === $needle)) {
      // Trim underscores
      $name = trim($name, $needle);
      // Add given name's tags
      $name = '<span itemprop="givenName">'.$name.'</span>';
    } else {
      // Add additional name's tags
      $name = '<span itemprop="additionalName">'.$name.'</span>';
    }
    return $name;
  }, $names);
echo $out;

打印

<span itemprop="additionalName">First</span> <span itemprop="givenName">Second</span> <span itemprop="additionalName">Thörd</span> <span itemprop="additionalName">Marco-Polo</span>