Это хорошо работает для меня:
<?php
$word_array = array('ipsum', 'adipisicing');
$soucre_sentence = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.';
$captilize_words = array();
$replacements_captalized = array();
$replacements_all_caps = array();
foreach ($word_array as $word) {
$captilize_words[] = '/\b' . $word . '\b/i';
$replacements_captalized[] = ucfirst(strtolower($word));
$replacements_all_caps[] = strtoupper($word);
}
$ret = preg_replace($captilize_words, $replacements_all_caps, $soucre_sentence);
echo $ret;
?>
Добавлено заглавные буквы и все замены CAPS, поскольку я не понимаю, что вы действительно хочу, чтобы ваш результат был. Выбери один!
EDIT: Подлинно не знал о гибкости array_map
(что @mmattax) и переработал его в последний раз с этим наконечником.
<?php
$word_array = array('ipsum', 'adipisicing');
$soucre_sentence = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.';
$captilize_words = array_map(function ($word) { return '/\b' . $word . '\b/i'; }, $word_array);
$replacements_captalized = array_map('ucfirst', $word_array);
$replacements_all_caps = array_map('strtoupper', $word_array);
$ret = preg_replace($captilize_words, $replacements_all_caps, $soucre_sentence);
echo $ret;
?>
regex поможет. см. http://www.php.net/manual/en/function.preg-replace.php – farmer1992
'str_replace' будет работать ... –