我正在尝试将字符串中的某些单词替换为空格,但我尝试替换的单词始终不同,除了前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。
答案 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