Как заменить отдельные слова в строке в PHP?

Мне нужно заменить слова на подстановки, заданные массивом как

$words = array(
'one' => 1,
'two' => 2,
'three' => 3
);

$str = 'One: This is one and two and someone three.';

$result = str_ireplace(array_keys($words), array_values($words), $str);

но этот метод меняется someone в some1, Мне нужно заменить отдельные слова.

2

Решение

Ты можешь использовать границы слова в регулярном выражении требовать совпадения слов.

Что-то вроде:

\bone\b

сделал бы это. preg_replace с i Модификатор — это то, что вы хотите использовать в PHP.

Regex demo: https://regex101.com/r/GUxTWB/1

Использование PHP:

$words = array(
'/\bone\b/i' => 1,
'/\btwo\b/i' => 2,
'/\bthree\b/i' => 3
);
$str = 'One: This is one and two and someone three.';
echo preg_replace(array_keys($words), array_values($words), $str);

PHP Demo: https://eval.in/667239

Выход:

1: это 1 и 2, а кто-то 3.

5

Другие решения

Вы можете использовать \ b в качестве границы слова в preg_replace:

foreach ($words as $k=>$v) {
$str = preg_replace("/\b$k\b/i", $v, $str);
}
2

Эта функция поможет вам заменить некоторые слова, но не символы в PHP. Используется функция pre-replace ()

<?PHP
function removePrepositions($text){

$propositions=array('/\bthe\b/i','/\bor\b/i', '/\ba\b/i', '/\band\b/i', '/\babout\b/i', '/\babove\b/i');

if( count($propositions) > 0 ) {
foreach($propositions as $exceptionPhrase) {
$text = preg_replace($exceptionPhrase, '', trim($text));

}
$retval = trim($text);

}
return $retval;
}

?>

Увидеть целый пример

0
По вопросам рекламы [email protected]