Я пытаюсь создать простую функцию для поиска слова в строке и связать его. Проблема в том, что иногда слово имеет точку или запятую в конце ее, и я хотел бы ее сохранить. поэтому text word.
должен измениться на text <a href="#">word</a>.
, а не на text <a href="#">word</a>
PHP preg_replace с сохранением соответствия не работает
Это моя функция до сих пор. Я не понимаю, почему он не работает:
$string = "words are plenty in the world. another world and another world,comma.";
function findWord ($string, $word, $link) {
$patt = "/(?:^|[^a-zA-Z])(" . preg_quote($word, '/') . ")(?:$|[^a-zA-Z])/i";
return preg_replace($patt, ' <a href="'.$link.'" class="glossary-item">'.$word.'</a>$3', $string);
}
echo findWord ($string, "world", "#");
получил это! благодаря! –
Только один вопрос. Могло ли это (модификатор границ слов) также использоваться в этом случае: return preg_replace ("% \ b $ word \ b% i", ''.$word.'', $ string); ? – sinisake
@nevermind: Да, но это будет работать по-другому. Например, текущее регулярное выражение будет извлекать 'abc' из' _abc1', который не будет иметь регулярное выражение со слоями. –