PHP多字符串替换

时间:2014-07-31 09:45:36

标签: php str-replace

我正在尝试将字符串中的某些单词替换为空格,但我尝试替换的单词始终不同,除了前3个字符。 例如,我有这个字符串:

"Hello, my name is Lorum and toc341013697 I'm 29 years old. And I toc241053612 test and bla h blah blah toc410183666." 

我想删除以toc开头的字词。 toc后面的数字总是不同,但它们总是9个字符。

有办法做到这一点吗? 我试过这个:

$text = "Hello, my name is Lorum and toc341013697 I'm 29 years old. And I toc241053612 test and bla h blah blah toc410183666.";
$toc = substr($text, strpos($text, "toc") + strlen("toc"), 9);
$toc = "toc".$toc." ";
$find = array($toc);
$replace = array("");

$text = str_replace($find, $replace, $text);

但他只删除了第一个toc。

2 个答案:

答案 0 :(得分:2)

您可以使用preg_replace使用regular expression替换多个相似的字符串:

$text = "Hello, my name is Lorum and toc341013697 I'm 29 years old. And I toc241053612 test and bla h blah blah toc410183666.";
$text = preg_replace('/toc[0-9]{9}/','', $text);

输出:

  

您好,我的名字是Lorum,我29岁。我试试看,等等等等。

正则表达式toc[0-9]{9}将替换“toc”的每个出现,后面恰好有9位数。

答案 1 :(得分:0)

$string = "Hello, my name is Lorum and toc341013697 I'm 29 years old. And I toc241053612 test and bla h blah blah toc410183666.";

$pos = 0;
while(($pos = strpos($string, 'toc', $pos)) !== false){
    $end = $pos + 13;
    for($i = $pos; $i < $end; $i++){
            $string[$i] = '';
    }
    $pos += strlen('toc');
}

print $string; // Hello, my name is Lorum and I'm 29 years old. And I test and bla h blah blah