我想创建一个 PHP 函数,它将用内部链接替换文本中的某些单词。到目前为止,这有效,但如果我有两个匹配项,我最终会得到无效的 HTML 代码。
Example:
Welpen /hunde
Chihuahua Welpen /hunde,chihuahua
function seo_internal_links($str, $links, $limit) {
foreach($links AS $link){
$pattern[$k] = "~\b($link[phrase])\b~i";
$replace[$k] = '<a href="'.$link[link].'">\\1</a>';
$k++;
}
return preg_replace($pattern,$replace,$str, $limit);
}
seo_internal_links($ad[text], $seo_internal_links, $limit = 1);
这将导致:
<a href="//hunde,chihuahua">Chihuahua <a href="/hunde">Welpen</a></a>
有人知道如何避免这种情况吗?我还想限制点击量,但 preg_replace 中的限制仅考虑唯一单词,而不是整个数组。
一些额外的解释。
我正在从表格中取出要替换的单词及其相应的替换项。有数百个。
$stmt ="
SELECT *
FROM $T73
ORDER BY prio desc
";
$result = execute_stmt($stmt, $link);
while ($row = mysql_fetch_object($result)){
$seo_internal_links[$row->ID]['phrase'] = $row->phrase;
$seo_internal_links[$row->ID]['link'] = $row->link;
}
$my[text] = seo_internal_links($my[text], $seo_internal_links, $limit = 1);
出现问题的原因是替换函数将再次从文本开头开始搜索下一个单词。相反,它应该在文本中继续。
我的目标是每当在充满关键字的表格中找到相关单词时,就插入指向我的网站文本的内部链接。例如,将“beagle welpen”替换为“比格犬韦尔彭。如果单词“welpen”也在表格内,它将破坏html代码并再次插入href标签。