我正在一个包含词汇表的网站上工作,其中解释了一些单词。另外,我想通过将它们放在具有标题属性的跨度中来描述文章中的术语。
我从数组中的数据库中获取所有术语:
$terms = array(
'word1' => 'This is a short description of word1',
'word2' => 'word2 maybe has something to do with word1'
);
包含文本的字符串可以是:
$string = 'In this sentence I want to explain both, word1 and word2.';
我试图用一个简单的 str_ireplace() 来简单地替换字符串中包含的单词:
foreach($terms as $term => $description)
{
$string = str_ireplace($term, '<span class="help" title="' . $description . '">' . $term . '</span>', $string);
}
现在发生的是,word1 和 word2 被正确替换。但是通过第二次迭代文本以搜索和替换 word2,它再次找到 word1 - 在已经创建的跨度的标题中。
因此 word1 的结果如下所示:
<span class="help" title="This is a short description of <span class="help" title="This is a short description of word1">word1</span>word1</span>
如何防止 PHP 替换现有跨度的标题标签中的相同单词?我不想为此使用 preg_replace() ,而不是将 html 解析为它。
我怎么能那样做?
来自德国的可爱问候克里斯