我有一个文字
@Mention text
我有@Mention文本部分的$ start和$ length值,但我无法正确更改文本,当字符串包含表情符号时,它提前几个字母
javascript从文本传递$ start和length,它理解
$start = " @Mention ".indexOf('@') //9
结果我需要的是
<span>@Mention text</span>
PHP中的正确函数是什么,我可以使用substring替换文本。 我看过网上,但没有解决方案
当前输出
@Ment<span>ion text</span>
$formatted = ' @Mention text ';
$content = $this->mb_substr_replace(
$formatted ?: '',
"<span class='mention-link'>" . mb_substr($formatted ?: '', $mention->getStart() ?: 0, $mention->getLength() ?: 0, 'UTF-8') . "</span>",
9,
5,
'UTF-8'
);
和函数本身
public function mb_substr_replace($string,$replacement,$start,$length=null,$encoding = null){
if ($encoding == null){
if ($length == null){
return mb_substr($string,0,$start).$replacement;
}
else{
return mb_substr($string,0,$start).$replacement.mb_substr($string,$start + $length);
}
}
else{
if ($length == null){
return mb_substr($string,0,$start,$encoding).$replacement;
}
else{
return mb_substr($string,0,$start,$encoding). $replacement. mb_substr($string,$start + $length,mb_strlen($string,$encoding),$encoding);
}
}
}