我有以下故事“另一个Feed在Facebook的照片上共享非营利。”,我想用链接替换其标签。
facebook api数据故事和story_tags
[story] => Another Feed shared Non-Profits on Facebook's photo.
[story_tags] => Array
(
[0] => Array
(
[0] => Array
(
[id] => 1.7153566624E+14
[name] => Another Feed
[offset] => 0
[length] => 12
[type] => page
)
)
[20] => Array
(
[0] => Array
(
[id] => 41130665917
[name] => Non-Profits on Facebook
[offset] => 20
[length] => 23
[type] => page
)
)
)
如果我用str_ireplace替换故事标签,那么两个不同的标签有可能具有相同的名称,因此它不会很好。
如果我用substr_replace(...)替换它,那么在替换故事的长度后会得到更多,那么新标签就不能与它一起很好地工作。
用故事情节替换故事标签的最佳方法是什么?我确定人们已经做到了,但无法找到它。
答案 0 :(得分:1)
看看我的实施:
public function mapMentions($message, $tags) {
if (empty($tags)) {
return $message;
}
$offsetBuffer = 0;
foreach (json_decode($tags, true) as $tag) {
$link = $this->Html->link($tag['name'], $tag['link'], ['target' => '_blank']);
$message = substr_replace($message, $link, $tag['offset'] + $offsetBuffer, $tag['length']);
$offsetBuffer += (strlen($link) - $tag['length']);
}
return $message;
}
瞧! ;)