37

PHPを使用して完全な単語だけを置き換えたい

例:私が持っている場合

$text = "Hello hellol hello, Helloz";

と私は使用します

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

新しいテキストは次のようになります

NEW hello1こんにちは、Helloz

PHPは

NEW hello1こんにちは、NEWz

ありがとう。

4

4 に答える 4

73

正規表現を使用したい。は\b単語の境界に一致します。

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

UTF-8テキストが含まれている場合$textは、Unicode修飾子「u」を追加して、ラテン文字以外の文字が単語の境界として誤って解釈されないようにする必要があります。

$text = preg_replace('/\bHello\b/u', 'NEW', $text);
于 2010-08-06T17:43:53.670 に答える
7

文字列内の複数の単語がこれに置き換えられました

    $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.
于 2017-04-04T08:30:39.520 に答える
2

配列置換リスト:置換文字列が相互に置換されている場合は、が必要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

于 2017-11-23T17:46:17.297 に答える
0

You can also use T-Regx library, that quotes $ or \ characters while replacing

<?php
$text = pattern('\bHello\b')->replace($text)->all()->with('NEW');
于 2018-12-12T17:26:54.583 に答える