str_replace 留下空格 PHP

str_replace leaving whitespace PHP

这是我要更改的变量:

$last = 'Some string 1 foobar'

和我的替换语句

$last = str_replace(['1', '2'], '', $last);

最后是输出

Some string   foobar

如何去掉 'string' 和 'foobar' 之间的空格,我最初的想法是在我的 str_replace 语句中使用 '' 作为替换也删除了空格,但它没有。

澄清一下,我想知道如何制作 Some string foobar 而不是 Some stringfoobar

基于正则表达式的方法对于此类内容更灵活:

<?php
$subject = 'Some string 1 foobar';
var_dump(preg_replace('/\d\s?/', '', $subject));

以上代码的输出为:string(18) "Some string foobar"

这是做什么的,它是如何工作的?它取代了 模式 ,而不是固定的文字字符串。这里的模式是:任何数字 (\d) 以及一个 可能 现有的白色 space 字符 (\s?)。


另一种不同的替代方法是:

<?php
$subject = 'Some string 1 foobar';
var_dump(preg_replace('/(\s\d)+\s/', ' ', $subject));

这将替换由一个或多个数字前面有一个白色 space ((\s\d)+) 以及一个白色 space 和一个白色空白组成的任何序列特点。

如果你不想使用 preg_replace 那么你可以这样做。

$result = 'Some string 1 foobar';
$result = str_replace(['1', '2'], '', $result);
$result = str_replace('  ', ' ', $result);

不过我不得不承认我更喜欢preg_replace解决方案。虽然不确定基准。