preg_replace Word в предложении и Word. в конце предложения

я хочу preg_replace "Word" в PHP.

    $ret = 'I gave my Word to you.';    
    $pattern = '/\bWord\b/i';
    $ret = preg_replace($pattern,"Heart",$ret);
// echo $ret; = "I gave my Heart to you";

Это работает до сих пор. Но если это предложение: «Я дал тебе свое Слово». или «Я дал тебе свое Слово!» это не изменяет «Слово». в «Сердце».


person kalimero    schedule 18.09.2010    source источник
comment
Прекрасно работает.   -  person kennytm    schedule 18.09.2010
comment
Если это такая простая замена, возможно, str_replace быстрее, чем регулярное выражение.   -  person Fanis Hatzidakis    schedule 18.09.2010
comment
@Fanis: str_replace не определяет границы слов.   -  person kennytm    schedule 18.09.2010
comment
@KennyTM, ты абсолютно прав, я исправляюсь.   -  person Fanis Hatzidakis    schedule 18.09.2010


Ответы (1)


Не уверен, в чем проблема. работает на меня.

<?
    $ret = 'I gave my Word to you Word.';
    $pattern = '/\bWord\b/i';
    $ret = preg_replace($pattern,"Heart",$ret);
    var_dump($ret);
?>

string(29) "Я отдал свое Сердце тебе, Сердце."

person Oliver O'Neill    schedule 18.09.2010
comment
Чтобы добавить к этому, границы слов \b соответствуют словам с символами [a-zA-Z0-9_]. - person Oliver O'Neill; 18.09.2010
comment
Хм, когда я помещаю это в один php-файл, он работает, а в другом коде - нет. возможно проблема в каком-то другом коде. спасибо, что открыл мне глаза - person kalimero; 18.09.2010