PHP facebook如何用故事线替换故事标签?
我有以下故事“另一个Feed在Facebook的照片上分享了非盈利内容。”,我想用链接替换它的标签 facebook api数据故事和故事标签PHP facebook如何用故事线替换故事标签?,php,facebook,facebook-graph-api,replace,Php,Facebook,Facebook Graph Api,Replace,我有以下故事“另一个Feed在Facebook的照片上分享了非盈利内容。”,我想用链接替换它的标签 facebook api数据故事和故事标签 [story] => Another Feed shared Non-Profits on Facebook's photo. [story_tags] => Array (
[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替换story标签,那么两个不同的标签可能有相同的名称,因此它不会很好地发挥作用
如果我用substr_replace(…)替换它,那么在替换之后,故事的长度会比原来更长,所以新的标记不能很好地与它一起工作
用故事线替换故事标签的最佳方法是什么?我确信人们已经做了,但找不到。请看一下我的实现:
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;
}
瞧 看看我的实现:
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;
}