这是我目前的代码:
foreach ($swears as $bad_word)
$body = str_ireplace($bad_word, "", $body);
它正在过滤坏词,但我还要将“:”过滤为正文中的“ - ”。如何在脚本中包含多个foreach语句?
答案 0 :(得分:3)
把它们放在一起吗?
例如:
foreach($swears as $bad_word)
$body = str_ireplace($bad_word, '', $body);
$replace_chars = array(
':' => '-',
'?' => '!');
foreach($replace_chars as $char => $rep)
$body = str_replace($char, $rep, $body);
如果您只想要替换一个额外的字符,只需在str_replace()
之外再次使用foreach()
,而不是使用$replace_chars
数组和第二个foreach()
{1}}。
答案 1 :(得分:3)
使用大括号?
foreach( $swears as $bad_word )
{
$body = str_ireplace($bad_word, "", $body);
$body = str_ireplace(":", "-", $body);
}
或str_ireplace中的数组:
foreach( $swears as $bad_word )
$body = str_ireplace(array(":", $bad_word), array("-", ""), $body);
答案 2 :(得分:1)
答案 3 :(得分:1)
所有回复都很糟糕。你不需要foreach循环。以下是应该的完成方式:
$filter = array(
':' => '-',
'badword' => '',
'anotherbad' => ''
);
$body = str_ireplace(array_keys($filter), $filter, $body);
答案 4 :(得分:0)
我不明白为什么你需要另外foreach
。
foreach ($swears as $bad_word)
$body = str_ireplace($bad_word, "", $body);
$body = str_replace(":", "-", $body);
但如果你这样做,没有什么可以阻止你再拥有另一个。
答案 5 :(得分:0)
您可以在stri_replace
中使用数组$body = str_ireplace($bad_words, '', $body);
$body = str_replace(':', '-', $body);
使用单个替换执行此操作的另一种方法,如果您有更多的过滤器数组(可以使用array_merge添加更多替换),这种方法很有效。
$filters = $bad_words;
$replacements = array_fill(0, count($bad_words), '');
$filters[] = ':';
$replacements[] = '-';
$body = str_ireplace($filters, $replacements, $body);