Ben bir metin ($text
) ve kelimelerin bir dizi var ($tags
). Bu metinde mevcut bağlantıları kırmak kalmamak metinde bu sözleri diğer sayfalara bağlantılar ile değiştirilmesi gerekir. CakePHP orada bu iş için TextHelper bir yöntemdir ancak bozuktur ve bu metinde mevcut HTML bağlantıları keser. Yöntemi, bu gibi çalışmak için varsayalım:
$text=Text->highlight($text,$tags,'<a href="/tags/\1">\1</a>',1);
Aşağıda CakePHP TextHelper mevcut kod var:
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);
}
}