我想知道,如何在不影响进程的情况下用其他内容替换文本
("Hi, I'm here!" Will be replaced with "bye"
(
像这样(Value ==> ReplacedValue
(:
Hi,I'mhere! ==> bye
Hi, I'm here! ==> bye
Hi, I'm here! ==> bye
Hi , I'm here! ==> bye
现在使用str_ireplace
(str_ireplace("TheOriginalWord", "TheReplacement", $data)
(不会做我想要的事情,它会这样做:
Hi, I'm here! ==> bye
Hi, I'm here! ==> Hi, I'm here!
Hi , I'm here! ==> Hi , I'm here!
使用正则表达式。
preg_replace('/His*,s*I'ms*here!/i', "bye", $data);
s*
匹配零个或多个空格。如果只想匹配一个或多个空格,请改用s+
。
Barmar的答案很好,但如果您需要可重复使用的东西,您可以使用以下函数:
function replace_spaceless(string $subject, string $from, string $to): string
{
$pattern = '/' . preg_replace('/(?<!^)s*bs*(?!$)/', '\s*', preg_quote($from, '/')) . '/';
return preg_replace($pattern, $to, $subject);
}
这基本上是str_replace
,只是它忽略了空格。为此,它构建了一个正则表达式,用s*
替换所有单词边界(字符串的开头/结尾除外(,并将其传递给preg_replace
。
演示:https://3v4l.org/o5om1