PHP字符串替换全字匹配PHP字符串替换全字匹配(PHP string replace match

2019-06-17 09:47发布

我想更换使用PHP只是完整的词

例如:如果我有

$text = "Hello hellol hello, Helloz";

我用

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

新的文本应该像

新hello1你好,Helloz

PHP的回报

新hello1你好,NEWz

谢谢。

Answer 1:

你想使用正则表达式。 该\b匹配一个单词边界。

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

如果$text包含UTF-8文本,你必须添加Unicode修改的“u”,使非拉丁字符不会被误解为单词边界:

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


Answer 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;


Answer 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



Answer 4:

您还可以使用T-至REGx库,该报价$\字符,而更换

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


文章来源: PHP string replace match whole word