将所有字符替换为除一个字之外的空格

时间:2011-08-23 18:10:19

标签: php preg-replace

$string = 'onetwothreefourfive';

如何将其转换为

$string = '      three        ';

我的输入是three

3 个答案:

答案 0 :(得分:2)

无需使用原始字符串操作,正则表达式来解救

$string = preg_replace('/(three\K)?./s', ' ', $string);

有关使用内容的详细信息,如果有任何不清楚之处,请查看PHP手册的PCRE Pattern Syntax章节。

答案 1 :(得分:1)

无需使用昂贵和/或复杂的正则表达式:

function replace_space($str, $keep, $hold) {
   $str = explode($keep, $str);
   foreach ($str as &$piece) {
      $piece = str_repeat($hold, strlen($piece));
   }
   return implode($keep, $str);
}

echo replace_space('onetwothreefourfivethreefour', 'three', ' ');

在大海捞针中测试并使用多个针头。

答案 2 :(得分:1)

$first_chunk = str_repeat(' ', strpos($string, 'three'));
$last_chunk = str_repeat(' ', strlen($string) - strpos($string, 'three') - strlen($string));

$string = $first_chunk . 'three' . $last_chunk;

没有经过测试,不会在大海捞针,YMMV,yada yada yada处理多个针。