我一直在配置我的PHP站点以使用微数据来显示用户名。
我的用户使用基于下划线的语法将给定名称与其他名称分开:
example: Mark _Jonas_ Flash
syntax: additionalName _givenName_ additionalName
我希望输出前面的内容:
<span itemprop="additionalName">Mark</span> <span itemprop="givenName">Jonas</span> <span itemprop="additionalName">Flash</span>
扭曲:
问题:如何使用PHP进行此类转换?
答案 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>