function magicWords($words, $string) {
$from = $to = array();
foreach($words as $word) {
$from[] = "/\b$word\b/i"; // \b represents a word boundary
$to[] = '<a href="#' . strtolower($word) . '">${0}</a>';
}
return preg_replace($from, $to, $string);
}
$words = array('go', 'walk');
echo magicWords($words, "Lets go walking on a Walk");
Это выводит:
'Lets <a href="#go">go</a> walking on a <a href="#walk">Walk</a>.'
Обратите внимание, что он соответствует "go" и "walk", но не "walk", и поддерживает заглавную букву W на Walk, а ссылка становится строчной "#walk".
Таким образом, "Walk WALK WALK WALK" будет ссылаться на #walk без изменения исходного форматирования.