给定一个文本块,我需要为现有的关键字解析它。然后在关键字的第一次出现时,我需要在它周围包含粗体标签(如果它还没有它们),关键字的第二个外观,斜体,以及第三个,下划线。
使用关键字“帮助”的示例:
这是一些带有关键字“help”的文字。如果你能提供帮助,我真的很感激。谢谢您的帮助!如果关键字帮助出现更多,我会忽略它们。
将被重写为......
这是一些带有关键字“< b> help< / b>”的文字。如果你可以< em>帮助< / em>,我真的很感激。感谢< u>帮助< / u>!如果关键字帮助出现更多,我会忽略它们。
答案 0 :(得分:0)
我假设您需要基于PHP的解决方案,因为您提到了str_ireplace
。
您可以使用preg_replace_callback执行此操作。
此函数类似于preg_replace
,但调用用户定义的回调函数,其返回值将用于替换。
要跟踪发生次数,我在回调函数中使用了static
变量。
$keyword = 'help';
// the callback function
function fun($matches)
{
static $count = 0;
// switch on $count and later increment $count.
switch($count++) {
case 0: return '<b>'.$matches[1].'</b>'; // 1st time..use bold
case 1: return '<em>'.$matches[1].'</em>';
case 2: return '<u>'.$matches[1].'</u>';
default: return $matches[1]; // don't change others.
}
}
// search for keyword separated by word boundaries.
// if present call the callback function.
$text = preg_replace_callback("/\b($keyword)\b/","fun",$text);