gpt4 book ai didi

php - 在 PHP 中用标签链接替换单词

转载 作者:可可西里 更新时间:2023-11-01 13:27:12 24 4
gpt4 key购买 nike

我有一个文本 ($text) 和一个单词数组 ($tags)。文本中的这些词应替换为其他页面的链接,以免破坏文本中的现有链接。在 CakePHP 中,TextHelper 中有一个方法可以执行此操作,但它已损坏并且会破坏文本中现有的 HTML 链接。该方法假设是这样工作的:

$text=Text->highlight($text,$tags,'<a href="/tags/\1">\1</a>',1);

下面是 CakePHP TextHelper 中的现有代码:

function highlight($text, $phrase, $highlighter = '<span class="highlight">\1</span>', $considerHtml = false) {
if (empty($phrase)) {
return $text;
}

if (is_array($phrase)) {
$replace = array();
$with = array();

foreach ($phrase as $key => $value) {
$key = $value;
$value = $highlighter;
$key = '(' . $key . ')';
if ($considerHtml) {
$key = '(?![^<]+>)' . $key . '(?![^<]+>)';
}
$replace[] = '|' . $key . '|ix';
$with[] = empty($value) ? $highlighter : $value;
}
return preg_replace($replace, $with, $text);
} else {
$phrase = '(' . $phrase . ')';
if ($considerHtml) {
$phrase = '(?![^<]+>)' . $phrase . '(?![^<]+>)';
}

return preg_replace('|'.$phrase.'|i', $highlighter, $text);
}
}

最佳答案

您可以在此处查看(并运行)此算法:

http://www.exorithm.com/algorithm/view/highlight

它可以通过一些改变变得更好和更简单,但它仍然不完美。尽管效率较低,但我还是推荐 Ben Doom 的解决方案之一。

关于php - 在 PHP 中用标签链接替换单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3507989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com