Подтвердить что ты не робот

Строка PHP заменит целое слово

Я хотел бы заменить только полные слова, используя php

Пример: Если у меня есть

$text = "Hello hellol hello, Helloz";

и я использую

$newtext = str_replace("Hello",'NEW',$text);

Новый текст должен выглядеть как

Привет, привет, Helloz

PHP возвращает

NEW hello1 привет, NEWz

Спасибо.

4b9b3361

Ответ 1

Вы хотите использовать регулярные выражения. \b соответствует границе слова.

$text = preg_replace('/\bHello\b/', 'NEW', $text);

Если $text содержит текст UTF-8, вам нужно будет добавить модификатор Unicode "u", чтобы нелатинские символы не были неверно истолкованы как границы слов:

$text = preg_replace('/\bHello\b/u', 'NEW', $text);

Ответ 2

несколько слов в строке заменены этим

    $String = 'Team Members are committed to delivering quality service for all buyers and sellers.';
    echo $String;
    echo "<br>";
    $String = preg_replace(array('/\bTeam\b/','/\bfor\b/','/\ball\b/'),array('Our','to','both'),$String);
    echo $String;
    Result: Our Members are committed to delivering quality service to both buyers and sellers.

Ответ 3

Список замены массива. Если ваши заменяющие строки заменяют друг друга, вам нужно preg_replace_callback.

$pairs = ["one"=>"two", "two"=>"three", "three"=>"one"];

$r = preg_replace_callback(
    "/\w+/",                           # only match whole words
    function($m) use ($pairs) {
        if (isset($pairs[$m[0]])) {     # optional: strtolower
            return $pairs[$m[0]];      
        }
        else {
            return $m[0];              # keep unreplaced
        }
    },
    $source
);

Очевидно, что/для эффективности /\w+/ можно заменить ключевым списком /\b(one|two|three)\b/i.

Ответ 4

Вы также можете использовать библиотеку T-Regx, которая заменяет символы $ или \ при замене

<?php
$text = pattern('\bHello\b')->replace($text)->all()->with('NEW');